记住我功能,这个是登入时常见的功能,就是用户在登入一次以后,勾选记住我功能按钮后,系统会记住用户一段时间,在这段时间内用户不应反复登入系统的操作;
简单说明一下:浏览器在用户登入的时候,发送认证请求给UsernamePassworAuthenticationFilter这个身份认证过滤器,或者是自己特定的过滤器,当我们的认证过滤器认证成功后会调用一个RemeberMeService的服务,这个服务里面有一个TokenRepository,这个会生成一个Token,然后将这个Token返回给浏览器并写入到Cookie里面,同时会将Token写入到数据库里面,这里Token和用户名是一一对应的,当我们的用户过了几天后在来请求我们的服务器,那么他就不需要登入了,在有效时间内可以直接访问受保护的服务,那么这些请求在经过过滤器链的时候会经过一个RememberMeAuthenticationFilter,这个过滤器的作用就是获取Cookie中的token,然后交给RemeberMeService,然后由RokenRepository到数据库中查询这个token在数据库中有没有记录,数据库中有token记录将对应的用户名取出来,取出用户名后会调用UserDetailsService,然后获取用户的信息放到SecurityContenx里面存储,然后用户就自动登入上,这就是记住我功能的基本流程!
RememberMeAuthenticationFilter