SpringSecurity 记住我原理:

一、创建token

进入UsernamePasswordAuthticationFilter进行用户信息验证,验证成功之后它会调用一个AbstractAuthenticationProcessingFilter的过滤器进入一个successfulAuthentication方法中将用户的信息存入session中,然后调用RememberService调用loginSuccess方法,在这个方法中它又会调用rememberMeRequested方法,这个方法返回一个Boolean值,判断是否设置好RemeberMe这个功能。在rememberMeRequested这个方法中它会获取登录页面传送过来的remember-me这个参数,因为我们设置了value=”true”,因此它不为空并且该方法返回true。

接着:

其中 parameter 默认为  remember-me

TokenRepository将Token存入数据库中,并且将Token存入cookie中。在TokenRepository中调用我们上面实现的JdbcTokenRepositoryImpl bean的createNewToken方法内部实际上使用JdbcTemplate在更新数据库插入了当前Token。

在存入cookie是读取设置的过期参数,然后创建一个cookie通过response响应到浏览器存入cookie中。

二、验证token

看一下RememberMeAuthenticationFilter 位置:

当我们重新启动项目访问页面时,由于session被销毁,但是cookie中存在Token,它会到RememberMeAuthenticationFilter中读取session中的值,由于是重启项目,session被销毁,因此session为空,它会去到cookie中取是否存在Token,遍历cookie获取到RememberMe的Token,然后根据Token获取用户信息返回调用的URL信息。

检查cookie中有无 remember-me 参数:

有该参数的话,则解密该参数的值,然后 去数据库取出该token对应的信息,判断有无过期,校验通过

上面就是Spring Security实现RemeberMe功能的原理,关键是掌握功能的原理图,然后查看源码即可清楚的理解它的流程。

SpringSecurity - RememberMe相关推荐

  1. SpringSecurity,jwt oathu sso,YeZiJie

    Spring Security 中文文档 参考手册 中文版 (springcloud.cc) 一 springsecurity 1 SpringSecurity框架简介 安全框架:解决系统安全问题的框 ...

  2. SpringBoot集成SpringSecurity(二) 个性化登录配置(remember-me mongodb)

    前言 本文件所记录的是使用SpringSecurity实现remember me功能,有兴趣的朋友可以继续阅读,有何不足之处还请各位指出(本文未对用户 -  角色 - 权限三者的关系进行详细介绍详情见 ...

  3. SpringSecurity详细介绍RememberMe功能

      本文我们来实现下SpringSecurity的RememberMe功能 一.rememberMe功能实现 接下来我们看看具体怎么实现rememberMe功能 1.表单记住我选项 <%--Cr ...

  4. SpringSecurity(八)【RememberMe记住我】

    八.RememberMe 简介 RememberMe 这个功能非常常见,无论是在 QQ.邮箱-都有这个选项.提到 RememberMe,往往会有一些误解,认为 RememberMe 功能就是把 用户名 ...

  5. SpringSecurity的rememberme

    记住我功能原理分析 还记得前面咱们分析认证流程时,提到的记住我功能吗? 现在继续跟踪找到AbstractRememberMeServices对象的loginSuccess方法: 再点进去上面if判断中 ...

  6. SpringSecurity之RememberMe功能的原理

    在大多数网站中,都会实现RememberMe这个功能,方便用户在下一次登录时直接登录,避免再次输入用户名以及密码去登录,下面,主要讲解如何使用Spring Security实现记住我这个功能以及深入源 ...

  7. SpringSecurity (六) RememberMe登录

    一.项目配置 延用第五节的配置,依旧使用json的返回返回值 二.RememberMe的作用 1.默认可以所有接口访问,需要在securityConfig里配置securityFilterChain ...

  8. BCryptPasswordEncoder加密和匹配的原理 和 springsecurity 的 rememberme原理

    只知道这个的用法,心里着实难受,所以看了看底层,简单做下总结. BCryptPasswordEncoder算法和shiro的区别: 其实和shiro中区别就是shiro 中的salt是自己指定的,然后 ...

  9. SpringSecurity详细介绍RememberMe源码流程

      本文我们来详细看看rememberMe的源码流程 rememberMe源码分析   首先我们要搞清楚rememberMe功能应该是在认证成功后才能具有的,所以我们应该从Usernamepasswo ...

最新文章

  1. poj 1961 Period
  2. FragmentTabHost的应用
  3. 外包物料成本核算时的供应商确定
  4. rpm安装mysql报错_【CentOS-65】通过rpm包安装mysql57解决了server报错和mysqld启动报错的问题...
  5. 无法启动ASP.NET状态服务 错误0x8007277a;无法加载或初始化请求的服务提供程序
  6. python课堂整理15---map, filter,reduce函数
  7. Java EE + MongoDb与Apache TomEE和Jongo Starter项目
  8. pandas 读表格_pandas电子表格的读取(pandas中的read_excel)
  9. 95-270-019-源码-指标监测-常用监控指标
  10. python 获取本地视频信息_python获取视频文件信息
  11. 【操作系统】滨江学院 陈遥 期末试卷考点整理
  12. 每日一题[LeetCode 689]三个无重叠子数组的最大和
  13. Flink DataStream 关联维表实战
  14. MetadataReader、ClassMetadata、AnnotationMetadata的简单使用
  15. 灵悟礼品网上专卖店——前阶段总结
  16. python+opencv移动侦测(帧差法)
  17. Excel,WPS如何同时冻结行与列
  18. Maven(六)Maven传递性和依赖性
  19. 百度智能云 x 掌通家园 | 用科技点亮“家园共育”
  20. 推荐 | PyPi官网发布第三方库:python-office,专为Python自动化办公而生。

热门文章

  1. 记录一个问题:$router.push在setTimeout中的使用,显示找不到push
  2. 记一次升级了编译器后VSCode中产生的问题
  3. echarts图表中显示图例lengend
  4. 【BLE】蓝牙4.2核心协议
  5. Unity5权威讲解之菜鸟读书笔记(一)
  6. 手机工行显示服务器,工行手机银行服务器安全证书验证失败
  7. LeetCode 0870. 优势洗牌 - 【LetMeFly】趣解田忌赛马:能赢则赢,否则摆烂(贪心)
  8. Warframe圣殿突袭打法配卡详解
  9. python错误类型翻译_17个新手常见的Python运行时错误
  10. opencv 播放mp4