我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

相关配置

  • 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有效期

登录页面

<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有效期内,每次打开页面都不需要重新登录了。

  • 测试

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

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的相关配置方法及功能实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

VB.NET LISTVIEW的相关操作方法和实现的功能有哪些

VB.NET LISTVIEW的相关操作方法和实现的功能有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在VB.NET开发框架内,同样具有很多控件供开发人员使用,方便的实现
2023-06-17

PHP日期函数实现时间相关功能的方法总结

PHP日期函数是PHP语言中的一个重要特性,可以实现各种时间相关的功能。在本篇文章中,将总结一些常用的PHP日期函数的用法,帮助读者更好地理解和使用它们。一、获取当前时间PHP日期函数中最常用的一个函数就是date()函数,可以获取当前的日
PHP日期函数实现时间相关功能的方法总结
2023-11-20

Linux安装Golang及相关环境配置的方法是什么

这篇“Linux安装Golang及相关环境配置的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux安装Gol
2023-07-05

ubuntu虚拟机上网方式及相关配置的方法有哪些

本篇内容主要讲解“ubuntu虚拟机上网方式及相关配置的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ubuntu虚拟机上网方式及相关配置的方法有哪些”吧!一 Nat方式(虚拟机和主机
2023-06-13

GitLab的指标监控和报警功能及配置方法

GitLab是一个流行的开源代码托管平台,它不仅仅提供代码托管功能,还提供了一系列的项目管理和协作工具。为了保证代码仓库的稳定性和可靠性,GitLab提供了指标监控和报警功能,可以对代码仓库的关键指标进行实时监控,并在异常情况发生时及时通知
2023-10-22

PHPCMS实现文章置顶功能的方法

我个人喜欢把phpcms当作博客来用,而作为一个博客,怎能少编程客栈了文章置顶功能呢?其中用PHPCMS实现置顶功能非常简单,无非是修编程客栈改下推荐位的名称为置顶,然后在文章列表中推送需要置顶的文章罢了。 不过博客系统中置顶文章可不会与文
2022-06-12

Spring Cloud Alibaba之Sentinel实现熔断限流功能的方法

这篇文章主要介绍Spring Cloud Alibaba之Sentinel实现熔断限流功能的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!sentinel简介这个在阿里云有企业级的商用版本 应用高可用服务 AHA
2023-06-14

django channels使用、配置及实现群聊的方法

这篇文章主要介绍“django channels使用、配置及实现群聊的方法”,在日常操作中,相信很多人在django channels使用、配置及实现群聊的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”d
2023-06-30

Linux测试工具route的配置及实现方法

本篇内容主要讲解“Linux测试工具route的配置及实现方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux测试工具route的配置及实现方法”吧!本文是介绍管理Linux系统网络性能
2023-06-16

C#控件属性串行化的相关概念以及实现方法

这篇文章主要介绍“C#控件属性串行化的相关概念以及实现方法”,在日常操作中,相信很多人在C#控件属性串行化的相关概念以及实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#控件属性串行化的相关概念以及实
2023-06-17

Spring MVC环境中文件上传功能的实现方法详解

前言 我们在实际开发过程中,尤其是web项目开发,文件上传和下载的需求的功能非常场景,比如说用户头像、商品图片、邮件附件等等。其实文件上传下载的本质都是通过流的形式进行读写操作,而在开发中不同的框架都会对文件上传和下载有或多或少的封
2023-05-30

Golang哈希算法实现配置文件的监控功能详解

这篇文章主要介绍了Golang哈希算法实现配置文件的监控功能,哈希和加密类似,唯一区别是哈希是单项的,即哈希后的数据无法解密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2023-03-08

Ubuntu防火墙的安装、启用、配置、端口以及查看状态相关信息的方法

本篇内容介绍了“Ubuntu防火墙的安装、启用、配置、端口以及查看状态相关信息的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.安装s
2023-06-13

怎么使用Golang哈希算法实现配置文件的监控功能

这篇文章主要介绍“怎么使用Golang哈希算法实现配置文件的监控功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Golang哈希算法实现配置文件的监控功能”文章能帮助大家解决问题。SHA(
2023-07-05

Android手机获取root权限并实现关机重启功能的方法

本文实例讲述了Android手机获取root权限并实现关机重启功能的方法,是Android程序设计中非常常见的重要功能。现分享给大家,供大家在Android程序开发中参考之用。 具体功能代码如下:/** 执行命令* @param comma
2022-06-06

PHP开发买菜系统的配送地址管理功能实现方法

PHP开发买菜系统的配送地址管理功能实现方法随着网络购物的快速发展,买菜系统的出现让人们可以更便捷地购买新鲜的蔬菜水果。在一个完善的买菜系统中,配送地址管理功能是至关重要的。本文将介绍如何利用PHP开发一个买菜系统的配送地址管理功能。一、需
PHP开发买菜系统的配送地址管理功能实现方法
2023-11-01

编程热搜

目录