下面是“MVC使用极验验证制作登录验证码学习笔记7”的完整攻略。
1. 简介
本文将以MVC模式为基础,介绍如何使用极验验证制作登录验证码。
2. 准备工作
在开始使用极验验证之前,需要先注册一个极验账号,并创建一个验证实例。具体步骤如下:
- 进入极验验证官方网站,点击“注册”按钮,填写相关信息,完成注册流程;
- 登录账号后,进入“验证管理”页面,创建一个验证实例;
- 在实例设置页面,记录下“公钥”和“私钥”的值,用于后续操作。
3. 实现过程
3.1 添加依赖
在MVC模式下,使用极验验证需要添加官方提供的Java SDK依赖。在pom.xml文件中添加如下配置即可:
<dependency>
<groupId>com.geetest.sdk</groupId>
<artifactId>gt3-sdk</artifactId>
<version>3.0.0</version>
</dependency>
3.2 前端代码实现
在前端页面中,需要引入极验提供的Javascript SDK,并在页面加载时初始化验证码。代码示例:
<!DOCTYPE html>
<html>
<head>
<title>登录页面</title>
<script type="text/javascript" src="https://static.geetest.com/static/tools/gt.js"></script>
<script type="text/javascript">
var handler = function (captchaObj) {
//TODO
};
window.initGeetest({
gt: "{{ geetest.gt }}",
challenge: "{{ geetest.challenge }}",
new_captcha: "{{ geetest.new_captcha }}",
product: "popup",
width: "300px"
}, handler);
</script>
</head>
<body>
<form action="/login" method="post">
<label for="username">用户名:</label>
<input type="text" name="username" id="username" required><br>
<label for="password">密码:</label>
<input type="password" name="password" id="password" required><br>
<div id="captcha"></div>
<button type="submit">登录</button>
</form>
</body>
</html>
在上面的代码中,{{ geetest.gt }}
、{{ geetest.challenge }}
和{{ geetest.new_captcha }}
是从服务器端动态生成的验证参数,用于初始化验证码。
3.3 后端代码实现
在后端代码中,需要使用极验提供的Java SDK库,验证用户提交的验证码。代码示例:
@Controller
public class LoginController {
@Autowired
private GeetestConfig geetestConfig;
@PostMapping("/login")
public String login(@RequestParam String username, @RequestParam String password, HttpServletRequest request) {
// 构造极验验证对象
GeetestLib gtSdk = new GeetestLib(geetestConfig.getGeetestId(), geetestConfig.getGeetestKey());
// 获取请求参数
String challenge = request.getParameter(GeetestLib.GEETEST_CHALLENGE);
String validate = request.getParameter(GeetestLib.GEETEST_VALIDATE);
String seccode = request.getParameter(GeetestLib.GEETEST_SECCODE);
Boolean result = false;
// 校验极验验证结果
if (challenge != null && validate != null && seccode != null) {
result = gtSdk.enhencedValidateRequest(challenge, validate, seccode);
}
// 判断登录结果
if (result) {
return "success";
} else {
return "fail";
}
}
@ModelAttribute("geetest")
public GeetestLibResult getGeetest() {
// 初始化极验验证
GeetestLib gtSdk = new GeetestLib(geetestConfig.getGeetestId(), geetestConfig.getGeetestKey());
String resStr = "{}";
int gtServerStatus = gtSdk.preProcess();
resStr = gtSdk.getResponseStr();
GeetestLibResult geetest = new GeetestLibResult();
geetest.setGt(geetestConfig.getGeetestId());
geetest.setChallenge(JSONObject.fromObject(resStr).getString("challenge"));
geetest.setNew_captcha("true");
return geetest;
}
}
在上面的代码中,GeetestConfig
是一个配置类,用于存储极验验证的公钥和私钥。GeetestLibResult
是一个Java对象,用于将验证参数传递到前端页面中进行初始化。
4. 注意事项
在使用极验验证时,需要注意以下几点:
- 必须先注册极验账号,并创建一个验证实例;
- 需要在前端页面中引入极验提供的Javascript SDK,并在页面加载时初始化验证码;
- 需要在后端代码中使用极验提供的Java SDK库,验证用户提交的验证码;
- 极验验证参数是每次服务端请求都会动态生成的,需要在后端代码中生成并传递到前端页面中。
5. 总结
本文介绍了如何使用MVC模式和极验验证制作登录验证码。使用极验验证可以有效防止恶意攻击,提高登录系统的安全性和用户体验。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MVC使用极验验证制作登录验证码学习笔记7 - Python技术站