Spring Security自定义认证逻辑实现图片验证码登录( 三 )

测试首先获取图片验证码

Spring Security自定义认证逻辑实现图片验证码登录

文章插图
 
输入正确的验证码和错误的密码,进行登录:
Spring Security自定义认证逻辑实现图片验证码登录

文章插图
 
如果输入错误的验证码
Spring Security自定义认证逻辑实现图片验证码登录

文章插图
 
问题使用AirPost测试遇到的问题controller文件中设置了两个api,一个方法往session中加了一个值,另一个方法从sesion中取值,结果两次操作的sessionId不同 。
代码如下所示:
@GetMapping("/verify-code")public void getVerifyCodePng(HttpServletRequest request) {Producer producer = verifyService.getProducer();String text = producer.createText();HttpSession session = request.getSession();session.setAttribute("verify_code", text);session.setAttribute("user", "hresh");log.info("code is " + text + " session id is " + session.getId());}@GetMapping("/code")public String getVerifyCode(HttpServletRequest request) {HttpSession session = request.getSession();String verify_code = (String) session.getAttribute("verify_code");log.info("input code is " + verify_code + " session id is " + session.getId());return verify_code;}执行结果:
input code is 8045 session id is 77EBBF046128BC3618C825F62C0A2099input code is null session id is A69A7D10EAFB0471B5D658489522739D网上有类似的问题,可以参考这篇文章:blog.csdn.NET/weixin_4164…
相关问题还可以看这篇文章:跨域访问sessionid不一致问题
总结上面的例子主要是针对认证功能做一点增强,在实际应用中,其他的登录场景也可以考虑这种方案,例如目前广为流行的手机号码动态登录,就可以使用这种方式认证 。
后续我们还会自定义认证流程中的密码比对,以及授权流程中的权限比对,使之更佳贴近实际应用场景 。




推荐阅读