Spring Security 记住我功能原理以及实现
2018-02-28 07:48
609 查看
用户名登陆的案例
实现“记住我” 功能
在用户登陆一次以后,系统会记住用户一段时间,在这段时间,用户不用反复登陆就可以使用我们的系统。
记住我功能的基本原理
用户发送请求到UsernamePasswordAuthenticationFilter,当用户认证成功以后,会调一个RemeberMeService这样一个服务。这个服务里面有一个TokenRepository,会生成一个Token,将这个Token写入到浏览器的Cookie里面,同时TokenRepository把生成的Token写入到数据库里面(还有用户名)。过了一天用户来访问系统 就不需要登陆了,直接访问某一个受保护的服务,这个请求在经过过滤器链的时候会经过RemberMeAuenticationFilter(读取Cookie中的Token)给RemberMeService,RemberMeService会根据Token到数据库里面去查。如果有记录,就会把Username用户名取出来,取出来之后会调用UserDetailsService,获取用户信息,然后把用户信息放入到SecurityContext里面。
实现
源码解析:
登陆成功后的一个认证处理,在AbstracAuthenticationProcessingFilter
PersistentTokenBasedRememberMeservices
RemembermeAuthenticationFilter
实现“记住我” 功能
在用户登陆一次以后,系统会记住用户一段时间,在这段时间,用户不用反复登陆就可以使用我们的系统。
记住我功能的基本原理
用户发送请求到UsernamePasswordAuthenticationFilter,当用户认证成功以后,会调一个RemeberMeService这样一个服务。这个服务里面有一个TokenRepository,会生成一个Token,将这个Token写入到浏览器的Cookie里面,同时TokenRepository把生成的Token写入到数据库里面(还有用户名)。过了一天用户来访问系统 就不需要登陆了,直接访问某一个受保护的服务,这个请求在经过过滤器链的时候会经过RemberMeAuenticationFilter(读取Cookie中的Token)给RemberMeService,RemberMeService会根据Token到数据库里面去查。如果有记录,就会把Username用户名取出来,取出来之后会调用UserDetailsService,获取用户信息,然后把用户信息放入到SecurityContext里面。
实现
源码解析:
登陆成功后的一个认证处理,在AbstracAuthenticationProcessingFilter
PersistentTokenBasedRememberMeservices
RemembermeAuthenticationFilter
相关文章推荐
- 前端分页功能的实现以及原理
- 前端分页功能的实现以及原理
- [Android开发] 在项目中快速实现 列表字母排序滑动索引 功能原理以及过程代码
- 前端分页功能的实现以及原理
- Spring Security 构建rest服务实现rememberme 记住我功能
- 前端分页功能的实现以及原理(jQuery)
- 前端分页功能的实现以及原理
- C语言中strtok使用方法与原理,以及自实现函数功能
- Spring Security 中实现 Remember Me 记住密码功能
- 前端分页功能的实现以及原理
- 前端分页功能的实现以及原理
- 前端分页功能的实现以及原理
- 表达式树及其变体,以及我是如何借着个原理实现简易计算器的功能的
- Android自定义控件实现登陆界面以及SharedPreferences实现记住密码功能
- 用户登录记住密码功能(记住登陆状态),下次不需要重新登录,注意安全问题!实现原理
- mdev的使用方法和原理以及实现U盘或SD卡的自动挂载
- Synchronized的使用以及实现原理
- 源代码解读Cas实现单点登出(single sign out)功能实现原理
- Android实现上拉加载更多以及下拉刷新功能(ListView)