Spring Security实现记住我功能

Stella981
• 阅读 563

POM:

 1   <dependency>
 2        <groupId>org.springframework.security</groupId>
 3        <artifactId>spring-security-web</artifactId>
 4        <version>5.0.4.RELEASE</version>
 5    </dependency>
 6    <dependency>
 7        <groupId>org.springframework.security</groupId>
 8        <artifactId>spring-security-config</artifactId>
 9        <version>5.0.3.RELEASE</version>
10    </dependency>
11    <dependency>
12        <groupId>com.alibaba</groupId>
13        <artifactId>druid</artifactId>
14        <version>1.1.11</version>
15     </dependency>

HTML:

1 <input type="checkbox" name="remember-me" checked value="true">

配置类:

 1 @Autowired  
 2 private DataSource myDataSource;
 3 
 4 @Autowired
 5 private UserDetailService userDetailsService;
 6 
 7 @Override
 8 protected void configure(HttpSecurity http) throws Exception {
 9         http.rememberMe()
10                 .tokenRepository(persistentTokenRepository())
11                 .userDetailsService(userDetailsService)
12                 //token "记住我"功能的token过期时间(秒)
13                 .tokenValiditySeconds(3600);
14 }
15  @Bean
16     public PersistentTokenRepository persistentTokenRepository(){
17         //remember-me token
18         JdbcTokenRepositoryImpl tokenRepository=new JdbcTokenRepositoryImpl();
19         tokenRepository.setDataSource(myDataSource);
20         //第一次启动时自动建token-登陆表
21 //        tokenRepository.setCreateTableOnStartup(true);
22         return tokenRepository;
23     }

dataSource:

 1 @Configuration
 2 public class DataSourceConfig {
 3     @Bean(name = "myDataSource")
 4     @Qualifier("myDataSource")
 5     @ConfigurationProperties(prefix="spring.datasource")
 6     public DataSource dataSource(){
 7         DruidDataSource druidDataSource = new DruidDataSource();
 8         return druidDataSource;
 9 //        return DataSourceBuilder.create().build();
10     }
11 }

yml:

 1 spring:
 2   datasource:
 3     type: com.alibaba.druid.pool.DruidDataSource
 4     driver-class-name: com.mysql.jdbc.Driver
 5     url: jdbc:mysql://127.0.0.1:3306/security?characterEncoding=utf8
 6     username: root
 7     password: 123456
 8     #最大活跃数
 9     maxActive: 20
10     #初始化数量
11     initialSize: 1
12     #最大连接等待超时时间
13     maxWait: 60000
14     #打开PSCache,并且指定每个连接PSCache的大小
15     poolPreparedStatements: true
16     maxPoolPreparedStatementPerConnectionSize: 20
17     #通过connectionProperties属性来打开mergeSql功能;慢SQL记录
18     #connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
19     minIdle: 1
20     timeBetweenEvictionRunsMillis: 60000
21     minEvictableIdleTimeMillis: 300000
22     validationQuery: select 1 from dual
23     testWhileIdle: true
24     testOnBorrow: false
25     testOnReturn: false
26   jpa:
27     properties:
28       hibernate:
29         show_sql: true
30         format_sql: true

 Druid配置类:

 1 @Configuration
 2 public class DruidConfiguration {
 3 
 4     @Bean
 5     public ServletRegistrationBean statViewServlet(){
 6         //创建servlet注册实体
 7         ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
 8         //设置ip白名单
 9         servletRegistrationBean.addInitParameter("allow","127.0.0.1");
10         //设置ip黑名单,如果allow与deny共同存在时,deny优先于allow
11         servletRegistrationBean.addInitParameter("deny","192.168.0.19");
12         //设置控制台管理用户
13         servletRegistrationBean.addInitParameter("loginUsername","druid");
14         servletRegistrationBean.addInitParameter("loginPassword","123456");
15         //是否可以重置数据
16         servletRegistrationBean.addInitParameter("resetEnable","false");
17         return servletRegistrationBean;
18     }
19 
20     @Bean
21     public FilterRegistrationBean statFilter(){
22         //创建过滤器
23         FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
24         //设置过滤器过滤路径
25         filterRegistrationBean.addUrlPatterns("/*");
26         //忽略过滤的形式
27         filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
28         return filterRegistrationBean;
29     }
30 }
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java操作html格式数据
近期在做数据抓取功能,抓取到的数据为html格式,需在后台进行转换后取值,为了避免使用字符串查找方式获取而使用Jsonp完美实现。1\.引入Jsonp:1<dependency2<groupIdorg.jsoup</groupId3<artifactIdjsoup</artifactId
Wesley13 Wesley13
3年前
java操作redis学习笔记
一、jedis操作:1、POM依赖:1<dependency2<groupIdredis.clients</groupId3<artifactIdjedis</artifactId4<version2.5.0</ve
Stella981 Stella981
3年前
Spring Security入门(基于SSM环境配置)
一、前期准备配置SSM环境二、不使用数据库进行权限控制配置好SSM环境以后,配置SpringSecurity环境1.添加security依赖   <dependency     <groupIdorg.springframework.security<
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
3年前
SpringBoot集成Spring Security(授权与认证)
⒈添加starter依赖1<dependency2<groupIdorg.springframework.boot</groupId3<artifactIdspringbootstarterweb</artifactId4
Wesley13 Wesley13
3年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Easter79 Easter79
3年前
SpringBoot集成Spring Security(授权与认证)
⒈添加starter依赖1<dependency2<groupIdorg.springframework.boot</groupId3<artifactIdspringbootstarterweb</artifactId4