SpringSecurity的相关配置方法及功能实现

本篇内容介绍了“Spring Security的相关配置方法及功能实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联建站主营金安网站建设的网络公司,主营网站建设方案,重庆APP开发,金安h5小程序定制开发搭建,金安网站营销推广欢迎金安等地区企业咨询

相关配置

  • Security配置

@Resource private DataSource dataSource ;  // 这里配置持久化登录token @Bean public PersistentTokenRepository persistentTokenRepository() {     JdbcTokenRepositoryImpl tokenRepository = new JdbcTokenRepositoryImpl();   tokenRepository.setDataSource(dataSource) ;   return tokenRepository; }
  •  SQL脚本

进入JdbcTokenRepositoryImpl中将其中的CREATE_TABLE_SQL语句复制出来执行下。

Spring Security的相关配置方法及功能实现

  • HttpSecurity配置

http.rememberMe()             .tokenRepository(persistentTokenRepository())             .userDetailsService(userDetailsService()) // 记住我功能有效期内,用来查询用户详细信息的UserDetailsService             .tokenValiditySeconds(1800) ; // token有效期

登录页面

   记住我 

注意这里的checkbox的name属性值必须是“remember-me”。

这样就可以实现记住我功能了。只要在token有效期内,每次打开页面都不需要重新登录了。

  • 测试

登录后,关闭浏览器重写再打开页面不需要重新登录,同时查看数据表如下:

Spring Security的相关配置方法及功能实现

源码分析

我们从第一次登录开始

1.1 首先进入的

UsernamePasswordAuthenticationFilter过滤器,进入父类(AbstractAuthenticationProcessingFilter)的doFilter方法中。

Spring Security的相关配置方法及功能实现

直接进入登录成功的方法

1.2 执行successfulAuthentication方法

successfulAuthentication(request, response, chain, authResult);

 Spring Security的相关配置方法及功能实现

1.3 进入loginSuccess方法

进入

AbstractRememberMeServices类中的loginSuccess方法

Spring Security的相关配置方法及功能实现

1.4 执行子类

PersistentTokenBasedRememberMeServices中的onLoginSuccess方法。

Spring Security的相关配置方法及功能实现

这里的tokenRepository就是我们上面配置的

Spring Security的相关配置方法及功能实现

接着我们看再次打开浏览器后是如何实现免登录的。

1.1 首先执行

RememberMeAuthenticationFilter的doFilter方法

这个过滤器是只有你开启了记住我功能才会生效的。

Spring Security的相关配置方法及功能实现

从当前Security上下文中获取对象,获取不到通过remeberMeService自动登录

1.2 执行

AbstractRememberMeServices中的autoLogin方法

Spring Security的相关配置方法及功能实现

执行extractRememberMeCookie方法获取cookie中的remember-me信息

Spring Security的相关配置方法及功能实现

Spring Security的相关配置方法及功能实现

1.3 执行processAutoLoginCookie方法

Spring Security的相关配置方法及功能实现

Spring Security的相关配置方法及功能实现

这里解析出来的信息已经和数据库中对应上了。这样就可以拿到username了。

1.4 接下来执行一些判断token是否过期和更新token有效期

Spring Security的相关配置方法及功能实现

验证是否过期

Spring Security的相关配置方法及功能实现

更新token有效期

1.5 根据查询出来的username查询用户信息

Spring Security的相关配置方法及功能实现

return getUserDetailsService().loadUserByUsername(token.getUsername());

1.6 最后将用户信息存储到Security的上下文中

Spring Security的相关配置方法及功能实现

完毕!!!

“Spring Security的相关配置方法及功能实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


文章标题:SpringSecurity的相关配置方法及功能实现
文章出自:http://myzitong.com/article/pighco.html

其他资讯