基于数据库实现自动登录/记住我

2021-12-15  本文已影响0人  DOB_8199

1. 使用cookie

2. 安全框架机制实现自动登录

实现原理


第一次访问:1-2-3-4

第二次访问:11-12-13-14

源码


在UsernamePasswordAuthenticationFilter中首先判断是否为Post方法,且是否能获得对应的username和password,如果得到,则生成UsernamePasswordAuthenticationToken

点击进入父类方法AbstractAuthenticationProcessingFilter

认证成功后会调用父类这个方法:successfulAuthentication,得到用户的权限。

之后会调用rememberMeService。

在AbstractRememberMeServices中实现RememberMeServices接口中的loginSuccess方法

在AbstractRememberMeServices的子类PersistentTokenBasedRememberMeServices中又实现了这个抽象方法。该方法生成了token并放入数据库和cookie中。

在this.tokenRepository.createNewToken(persistentToken)中,JdbcTokenRepositoryImpl实现了PersistentTokenRepository接口中的方法createNewToken。然后在表名为persistent_logins的表中插入用户信息和token。

具体实现


1. 创建数据库表,也可以不用创建,会自动生成

2. 配置类,注入数据源,配置操作数据库对象

3. 修改安全配置类,添加记住我功能

4. 在登陆页添加记住我(此处:name 属性值必须位 remember-me.不能改为其他值)

放在数据库和Cookie中的token都是经过加密的

上一篇 下一篇

猜你喜欢

热点阅读