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都是经过加密的











网友评论