springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)

这个记住我的功能是springsecurity框架提供的,我们拿过来用就可以了。

原理

只要你点了记住我的按钮,在传到后端的时候,springsecurity框架就会接受到对应的信息,之后在跳转到首页的时候,就会给浏览器返回此时登录的用户的信息,也就是在浏览器保存一个cookie信息,以后登录的时候就是携带cookie信息进行登录

源码分析

我们找到登录的源码
以下就是框架的登录的源码,这个里面做的就是认证,但是认证之前我们已经学过,所以现在要看这个源码里面关于记住我的那部分就可以了。这个 记住我 的源码在这个过滤器的父类里面
springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
我们进入这个父类,找到认证成功之后的方法,看这个方法里面的东西

springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
找这个方法里面和remember相关的语句
这个就是登录成功之后的要做的
springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
我们进入这个以上的方法

springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
这个是一个接口,我们看这个接口的实现类
springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
选择第一个实现类,进去

springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
分析这个源码:
springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
这个的第二个参数一直进去,我们就可以看见

springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
这个就是一个默认的参数,也就是前端那个记住我的按钮的name属性的值,就是这个,记住,以后我们要在前段写的时候,就是这个名字

现在继续的看这个方法的意思

springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
这个方法里面就是对这个默认值进行判断,参数就是那个默认值。主要是判断这个默认值写的对不对,你前段是不是已经勾选了。就是在这个方法里面进行判断。

结合前端分析一下源码

name的属性必须是remember-me
springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
如果name的值不是这个,那么在源码里面的方法,这个判断的方法里面就拿不到参数,进而是不能进行下面的操作的,所以这个name必须是那个
springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
对于value属性的值,我们根据源码里面就可以找到

springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
必须是以上源码里面的某一个,现在我们写的是true

只有以上的都写对了,才可以实现记住我功能
以上都按照框架的规定写对了之后,我们看源码
springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
都写对了,rememberMeRequeste()这个方法返回是false的话,直接打印这句话,也就是不通过

如果返回是true,也就是记住我的功能返回是true,那么就走下一个方法,onLoginSuccess()

我们进入
springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
这个是一个接口,找到实现类
springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
进入实现类
springsecurity框架的学习,根据操作修改后台ssm项目进行学习,实现记住我的功能(原理分析)(八)
以上的意思就是将这个用户的信息封装为一个实体类,放到数据库,放到cookie里面,将cookie返回给浏览器。