Spring Security如何实现自动登陆功能


这篇文章主要介绍Spring Security如何实现自动登陆功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!当我们在登录像QQ邮箱这种大多数的网站,往往在登录按键上会有下次自动登录这个选项,勾选后登录成功,在一段时间内,即便退出浏览器或者服务器重启,再次访问不需要用户免费云主机域名输入账号密码进行登录,这也解决了用户每次输入账号密码的麻烦。
接下来实现自动登陆。applicatio.properties配置用户名密码controller层实现配置类实现访问http://localhost:8080/hello,此时系统会重定向到登录页面。
二话不说,输入账号密码,开搞!此时看到了登录数据remember-me的值为on,当自定义登陆框的时候应该知道如何定义key了吧。
在hello接口,可以很清楚的看到cookie里保存了一个remember-me的令牌,这个就是自动登录的关键所在。

至于令牌是怎么生成的,先看一段源码。核心处理类TokenBasedRememberMeServices->onLoginSuccess看完了核心的源码,也就知道了令牌的生成规则:username + “:” + tokenExpiryTime + “:” + password + “:” + key(key 是一个散列盐值,可以用来防治令牌被修改,通过MD5散列函数生成。),然后通过Base64编码。取出刚才的remember-me=amF2YToxNjM3MTI2MDk1OTMxOmQ5OGI3OTY5OTE4ZmQwMzE3ZWUyY2U4Y2MzMjQxZGQ0进行下验证。
解码后是java:1637126095931:d98b7969918fd0317ee2ce8cc3241dd4,很明显javausername1637126095931是两周后的tokenExpiryTimed98b7969918fd0317ee2ce8cc3241dd4passwordkey值的MD5加密生成的。需要注意的是key值是通过UUID随机生成的,当重启服务器时,UUID的变化会导致自动登录失败,所以为了避免之前生成的令牌失效,可以在配置中定义key值。在Spring Security—登陆流程分析曾经说到 Spring Security中的认证授权都是通过过滤器来实现的。RememberMeAuthenticationFilter 是自动登录的核心过滤器。大致整体流程就是如果拿不到实例,则进行remember-me验证,通过autoLogin方法里获取cookie,解析令牌,拿到Auth,最后进行校验。之后剩下的和登陆流程分析的差不多。以上是“Spring Security如何实现自动登陆功能”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注百云主机行业资讯频道!

相关推荐: Java多线程中如何创建线程

这篇文章主要介绍Java多线程中如何创建线程,免费云主机域名文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!自定义线程类继承Thread类重写run()方法,编写线程执行体(当成main()方法用)创建线程对象,调用start()方法启动线…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 09/27 11:37
下一篇 09/27 11:37

相关推荐