Apollo配置中心登陆页面添加验证码

效果图

软件环境

apollo配置中心,官方下载地址: https://github.com/apolloconfig/apollo

apollo配置中心,官方文档Apollo

验证码工具:hutool-all 5.8.36  官方网址https://github.com/chinabugotech/hutool

说明:

1、hutool的验证码实现不兼容毕昇jdk,需要换实现

2、20250410作者针对此问题更新了文章,添加了Kaptcha实现方案的代码

需求说明

1、登陆页面添加验证码支持

2、验证码正确才能登陆成功

3、验证码为空或不正确需在登陆页面提示出来

4、不能影响现有功能和性能

5、验证码获取与校验需要在0.5s内完成

登陆页面添加验证码

二开login.html

<!--  在密码表单的div后面添加如下代码    -->
<div class="form-group">
    <input type="text" name="captcha" tabindex="3"
           class="form-control" placeholder="Enter Captcha">
    <img src="/createCaptcha" alt="Captcha" />
</div>

maven配置

pom.xml

说明:

       不做表单密码加密传输的不需要升级bcprov,表单密码加密传输见作者另一篇文章

Apollo配置中心登陆页面表单密码加密提交-优快云博客

<!-- 工具包,包含验证码、加解密(无底层实现) -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.36</version>
</dependency>

<!-- 加解密(底层实现),低版本的可能需要升级 -->
<dependency>
	<groupId>org.bouncycastle</groupId>
	<artifactId>bcprov-jdk18on</artifactId>
	<version>1.80</version>
</dependency>

小知识:

       一般bcprov包并非直接引用,升级自带加解密包时可从对应依赖中先排除 ,然后添加新版本pom依赖。

二开Filter

二开或添加新的Filter皆可

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletResponse httpResponse = (HttpServletResponse) response;

    ....... // 其他代码
    
    // 验证码支持
    if(isLoginRequest2(httpRequest, httpResponse)){

        String captchaCode1 = obtainCaptchaCode1(httpRequest );
        String captcha = obtainCaptchaCode( httpRequest );
        if(StringUtil.isEmpty(captcha)){
            httpResponse.sendRedirect("signin#/error");
            return;
        }
        if(!captcha.equalsIgnoreCase(captchaCode1)){
            httpResponse.sendRedirect("signin#/error");
            return;
        }
    }

    ....... // 其他代码
     
    chain.doFilter(request, response);
}

/**
 * 判断是否登陆请求
 * 
 * @param request
 * @param response
 * @return
 */
private boolean isLoginRequest2(HttpSe
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞火流星02027

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值