JiExperience は、ロボット攻撃を効果的に防止し、Web サイトのセキュリティを向上させる検証サービスを提供するサードパーティ ライブラリです。Spring Boot と JiExperience の統合により、ログインや登録などの機密性の高い操作に対するユーザーの保護を強化できます。
最高のエクスペリエンスを統合する手順は次のとおりです。
1. まず、Jiyan公式サイトでアカウントを登録し、アプリケーションを作成し、Jiyan IDとKeyを取得する必要があります。
2. JiExperience の依存関係を Spring Boot プロジェクトに追加します。
<dependency>
<groupId>com.geetest.sdk</groupId>
<artifactId>gt3-sdk</artifactId>
<version>4.0.7-p3</version>
</dependency>
3. application.yml で Jiexin の ID と Key を設定します。
gt:
captcha:
id: [your_id]
key: [your_key]
4. 検証コード用のコントローラーを書き込みます。
@RestController
public class CaptchaController {
@Autowired
private CaptchaService captchaService;
@GetMapping("/captcha")
public void captcha(HttpServletRequest request, HttpServletResponse response) {
captchaService.generateCaptcha(request, response);
}
}
5. CaptchaService を作成します。
@Service
public class CaptchaService {
@Autowired
private GeetestLib geetestLib;
public void generateCaptcha(HttpServletRequest request, HttpServletResponse response) {
String userid = UUID.randomUUID().toString();
int gtServerStatus = geetestLib.preProcess(userid);
request.getSession().setAttribute(GeetestLib.gtServerStatusSessionKey, gtServerStatus);
request.getSession().setAttribute(GeetestLib.useridSessionKey, userid);
JSONObject jsonObject = new JSONObject();
jsonObject.put(GeetestLib.gtServerStatusSessionKey, gtServerStatus);
jsonObject.put(GeetestLib.gtUserIdSessionKey, userid);
response.setContentType("application/json;charset=UTF-8");
try {
response.getWriter().write(jsonObject.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
public boolean validateCaptcha(HttpServletRequest request) {
String challenge = request.getParameter(GeetestLib.geetestChallenge);
String validate = request.getParameter(GeetestLib.geetestValidate);
String seccode = request.getParameter(GeetestLib.geetestSeccode);
String userid = (String) request.getSession().getAttribute(GeetestLib.useridSessionKey);
int gtServerStatus = (int) request.getSession().getAttribute(GeetestLib.gtServerStatusSessionKey);
int gtResult = 0;
if (gtServerStatus == 1) {
gtResult = geetestLib.enhencedValidateRequest(challenge, validate, seccode, userid);
} else {
gtResult = geetestLib.failbackValidateRequest(challenge, validate, seccode);
}
return gtResult == 1;
}
}
6. ログインまたは登録したコントローラーで、CaptchaService の validateCaptcha メソッドを呼び出して検証コードを確認します。
@PostMapping("/login")
public String login(String username, String password, HttpServletRequest request) {
boolean captchaPassed = captchaService.validateCaptcha(request);
if (captchaPassed) {
// 验证码验证通过
// 进行登录操作
} else {
// 验证码验证失败
}
}
@PostMapping("/register")
public String register(String username, String password, HttpServletRequest request) {
boolean captchaPassed = captchaService.validateCaptcha(request);
if (captchaPassed) {
// 验证码验证通过
// 进行注册操作
} else {
// 验证码验证失败
}
}
上記の手順を通じて、Spring Boot 統合エクスペリエンスを実現し、より優れた検証サービスをユーザーに提供できます。