springboot はログインを実現するために極端なエクスペリエンスを統合します

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 統合エクスペリエンスを実現し、より優れた検証サービスをユーザーに提供できます。

おすすめ

転載: blog.csdn.net/qq_36151389/article/details/132857407