肝了一夜,撸了一个登录智能人机验证码功能
发布日期:2021-06-29 06:40:09 浏览次数:2 分类:技术文章

本文共 2498 字,大约阅读时间需要 8 分钟。

点击▲关注 “爪哇笔记”   给公众号标星置顶

更多精彩 第一时间直达

前言

群里有小伙伴觉得登录应该加个验证码的功能,撸主说太丑了,不加,于是乎某位群友就压测起来演示环境,还说性能力太差了,其实我也这么觉得,毕竟白嫖的云主机。

验证

传统验证码太丑了,还占空间,污染了妹子图的背景图,显然不符合撸主的审美,这里我们选用智能的人机安全验证,当然,自己撸是不可能的,这辈子都不可能,白嫖腾讯验证的免费次数。

大体验证流程如下:

开撸

前端引入:

前端代码:

请求代码:

window.callback = function(res){    if(res.ret === 0){       login(res)    }}function login(res){    //省略登录逻辑}

后端代码:

/** * 登录 */@PostMapping("/login")@ResponseBodypublic Result login(String username, String password,String ticket,String randstr){    try{        if(captchaUtils.check(ticket,randstr)){            Subject subject = ShiroUtils.getSubject();            password = MD5Utils.encrypt(username, password);            UsernamePasswordToken token = new UsernamePasswordToken(username, password);            subject.login(token);        }else{            return Result.error("人机验证失败");        }    }catch (Exception e) {        e.printStackTrace();        return Result.error("登录失败");    }    return Result.ok("登录成功");}

人机验证:

/** * 智能的人机安全验证 * @author 小柒2012 */@Component@Configuration@EnableConfigurationProperties({CaptchaProperties.class})public class CaptchaUtils {    private final static Logger LOGGER = LoggerFactory.getLogger(CaptchaUtils.class);    private CaptchaProperties captcha;    public CaptchaUtils(CaptchaProperties captcha) {        this.captcha = captcha;    }    public Boolean check(String ticket,String randstr) throws Exception {        if(captcha.getOpen()){            Map
paramsMap= new HashMap<>(); paramsMap.put("aid", captcha.getAid()); paramsMap.put("AppSecretKey", captcha.getAppSecretKey()); paramsMap.put("Ticket", ticket); paramsMap.put("Randstr", randstr); paramsMap.put("UserIP", IPUtils.getIpAddr()); String msg = HttpUtils.get(captcha.getUrl(), paramsMap); /** * response: 1:验证成功,0:验证失败,100:AppSecretKey参数校验错误[required] * evil_level:[0,100],恶意等级[optional] * err_msg:验证错误信息[optional] */ JSONObject json = JSONObject.parseObject(msg); String response = (String) json.get("response"); if("1".equals(response)){ return true; }else{ return false; } }else{ return true; } }}

配置引入:

# 验证码参数(自行替换)qq.captcha.url= https://ssl.captcha.qq.com/ticket/verifyqq.captcha.aid= ***********qq.captcha.AppSecretKey= ***********

演示

小结

尽情的来肆虐妹子图吧,后台回复666获取演示地址以及相关项目源码。

你点的每个在看,我都认真当成了喜欢

转载地址:https://blog.csdn.net/zhulin2012/article/details/108722467 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:推荐一个码云 1w+ 星标的 Spring Cloud 微服务项目
下一篇:上班划水神器:一个可以在控制台玩斗地主的项目!

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月22日 10时10分32秒