springsecurity 记住我
时间:2021-08-13
本文章向大家介绍springsecurity 记住我,主要包括springsecurity 记住我使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原理分析
1、用户登录通过UsernamePasswordAuthenticationFilter认证请求处理,
2、通过RememberMeServices对象中的onLoginSuccess方法完成登录成功后的处理,
2.1、TokenRepository对象生成token字符
2.2、RememberMeServices对象的addCookie方法将生成的token字符串存储到Cookie中
2.3、token字符串存储到数据库中
3、用户再次访问
4、RememberMeAuthenticationFilter过滤器中读取Cookie中的Token字符串
5、判断读取的Token字符串和数据库中的存储数据是否一致,并且返回UserDetailsService
用法
cookie读写RememberMeAuthenticationFilter过滤器已经完成,现在就缺少数据库存储,数据库相关的就需要配置数据源
1、创建表
CREATE TABLE persistent_logins (username VARCHAR(64) NOT NULL, series VARCHAR(64) PRIMARY KEY, token VARCHAR(64) NOT NULL, last_used TIMESTAMP NOT NULL)
2、配置操作数据库表,在SecurityConfig配置类
@Autowired DataSource dataSource; public PersistentTokenRepository persistentTokenRepository(){ JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl(); jdbcTokenRepository.setDataSource(dataSource); //jdbcTokenRepository.setCreateTableOnStartup(true); //自动创建token相关数据表 return jdbcTokenRepository; }
3、配置记住我
//授权:针对url的设置 @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().anyRequest().authenticated(). and(). formLogin() .and() .rememberMe() .tokenRepository(persistentTokenRepository()) .tokenValiditySeconds(60)//设置有效时长,单位:秒 .userDetailsService(userDetailsServiceImpl)
.and() .csrf().disable(); }
4、画面设计
注意:自定义登录页面时【记住我】的组件name属性值是remember-me,不能改变
<input type="checkbox" name="remember-me"/>
原文地址:https://www.cnblogs.com/WarBlog/p/15138526.html
- 需要了解的pssh(r11笔记第28天)
- 二分查找算法基本思想
- Flyod 算法(两两之间的最短路径)
- HDUOJ-4104 Discount
- HDUOJ-----1085Holding Bin-Laden Captive!
- HDUOJ-----1098 Ignatius's puzzle
- 转--shell脚本备份mysql数据库
- NYOJ——————数的长度(斯特林公式的应用)
- 关于ssh命令的几个使用小技巧(r11笔记第27天)
- Golang语言社区--消息触发服务器启动基础模块分享
- NYOJ------汉诺塔(一)
- HDUOJ----Coin Change
- Golang语言社区--列出目录和遍历目录的方法
- HDUOJ-------单词数
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释