您现在的位置是:亿华云 > 人工智能
Spring Security功能实现及源码分析
亿华云2025-10-09 03:36:23【人工智能】4人已围观
简介环境:Spring Boot 2.2.11.RELEASE请先阅读《Spring Boot Security防重登录及在线总数 》,《Springboot Security 基础应用 (1) 》相关配
环境:Spring Boot 2.2.11.RELEASE
请先阅读《Spring Boot Security防重登录及在线总数 》,实现《Springboot Security 基础应用 (1) 》
相关配置
Security配置 @Resource private DataSource dataSource ; // 这里配置持久化登录token @Bean public PersistentTokenRepository persistentTokenRepository() { JdbcTokenRepositoryImpl tokenRepository = new JdbcTokenRepositoryImpl(); tokenRepository.setDataSource(dataSource) ; return tokenRepository; } SQL脚本进入JdbcTokenRepositoryImpl中将其中的及源CREATE_TABLE_SQL语句复制出来执行下。
登录页面
<div class="c-row" style="height: auto;"> <input type="checkbox" class="checkbox-control" id="remember-me" name="remember-me"/><label for="remember-me">记住我</label> </div>注意这里的checkbox的name属性值必须是“remember-me”。
这样就可以实现记住我功能了。及源只要在token有效期内,码分每次打开页面都不需要重新登录了。实现
测试登录后,及源关闭浏览器重写再打开页面不需要重新登录,码分同时查看数据表如下:
源码分析
我们从第一次登录开始
1.1 首先进入的香港云服务器实现
UsernamePasswordAuthenticationFilter过滤器,进入父类(AbstractAuthenticationProcessingFilter)的及源doFilter方法中。
直接进入登录成功的码分方法
1.2 执行successfulAuthentication方法
successfulAuthentication(request, response, chain, authResult);
1.3 进入loginSuccess方法
进入
AbstractRememberMeServices类中的loginSuccess方法
1.4 执行子类
PersistentTokenBasedRememberMeServices中的onLoginSuccess方法。
这里的实现tokenRepository就是我们上面配置的
接着我们看再次打开浏览器后是如何实现免登录的。
1.1 首先执行
RememberMeAuthenticationFilter的b2b信息网及源doFilter方法
这个过滤器是只有你开启了记住我功能才会生效的。
从当前Security上下文中获取对象,码分获取不到通过remeberMeService自动登录
1.2 执行
AbstractRememberMeServices中的autoLogin方法
执行extractRememberMeCookie方法获取cookie中的remember-me信息
1.3 执行processAutoLoginCookie方法
这里解析出来的信息已经和数据库中对应上了。这样就可以拿到username了。
1.4 接下来执行一些判断token是否过期和更新token有效期
验证是否过期
更新token有效期
1.5 根据查询出来的username查询用户信息
1.6 最后将用户信息存储到Security的上下文中
完毕!!!
亿华云计算很赞哦!(93)
相关文章
- 公司名字不但要与其经营理念、活动识别相统一,还要能反映公司理念,服务宗旨、商品形象,从而才能使人看到或听到公司的名称就能产生愉快的联想,对商店产生好感。这样有助于公司树立良好的形象。
- 省级农信数据中心建设趋势与无损技术创新应用
- 利用戴尔科技5G+边缘计算 打造更智慧的急救方案
- 数字孪生为数据中心插上“可持续”的翅膀
- 在数以亿计的网站中,我们应该抓住每一个可能带来宣传的机会,域名可以带有企业的名字,一般可以使用汉语拼音或者英语单词或者是相关缩写的形式,只要用户记住了你企业的名字,就能很容易的打出你的网站域名,同样的,记住了网站域名也能很快的记住你公司的名字。
- NVIDIA 与 Ampere Computing 携手创建用于云游戏的Arm 架构云原生服务器平台
- 《BusinessLine》对话戴尔联席coo:数字化转型持续增长
- 一站式全包!联想TruScale服务助力并行科技解决上云麻烦
- 记住那句话,域名向来不属于任何人,谁先买就归谁,购买期过后,域名又不再属于任何人。
- 华为助力百度打造新一代数据中心互联网络,实现全光网智能升级