千家信息网

springsecurity如何实现下次自动登录功能过程解析

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,这篇文章将为大家详细讲解有关springsecurity如何实现下次自动登录功能过程解析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、原理分析第一次登陆时,如果
千家信息网最后更新 2024年11月24日springsecurity如何实现下次自动登录功能过程解析

这篇文章将为大家详细讲解有关springsecurity如何实现下次自动登录功能过程解析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、原理分析

第一次登陆时,如果用户勾选了readme选项,登陆成功后springsecurity会生成一个cookie返回给浏览器端,浏览器下次访问时如果携带了这个cookie,springsecurity就会放行这次访问。

二、实现方式

2.1 简单实现方式

(1) 在springsecurity的配置文件中,http节点下增加一个remember-me配置

其中remember-me-parameter="remembermeParamater"指定前台传递的是否rememberme的参数名,前台要传递的参数值是true或false

(2)前台登录页面上增加一个checkbox

用户名:
密 码:
记住我:

checkbox的name属性要和上边配置文件中的remember-me-parameter="remembermeParamater"保持一致。

(3)测试

启动工程,进行登录,登录成功后观察cookie,会发现服务器端返回了一个名为remember-me的cookie

现在关闭浏览器,再次打开并访问,只要不清除cookie就可以直接访问资源,不需要重新登录。

这种方式有个弊端,浏览器端要携带的这个cookie值服务端是存放在内存中的,并没有进行持久化,所以如果服务重启后服务器端存储的这个值就会丢失,浏览器端的rememberme就会失效。为了解决这个问题就需要将服务器端生成的这个cookie值持久化到数据库中。

2.2 数据库实现方式

(1)创建一张表用来持久化rememberme的记录

-- 创建记录rememberme记录的表

CREATE TABLE persistent_logins( username VARCHAR(64), series VARCHAR(64), token VARCHAR(64), last_used DATE );

(2)将spring-security 配置文件中的rememberme标签的内容改为如下内容

data-source-ref="dataSource"用来指定数据源,spring-security通过数据源来操作数据库中的persistent_logins表

token-validity-seconds表示rememberme的有效时间,以秒为单位,这里的86400=24*3600表示一天

(3)测试

启动工程,进行登录,登录成功后会在persistent_logins表中生成一条记录,

关闭浏览器再次访问时会根据浏览器中携带的cookie值来查找数据库中的这条记录,如果查询到了就认证通过

三、区分是密码登录还是rememberme登录

在用户进行一些敏感操作时,需要区分是否是rememberme登录,如果是需要让用户跳转到登录页面。

在congtroller层提供一个方法来进行判断

@GetMapping("/isRemembermeUser")public boolean isRemembermeUser(){ Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if(authentication==null){ return false; } //判断当前用户是否是通过rememberme登录,是返回true,否返回false return RememberMeAuthenticationToken.class.isAssignableFrom(authentication.getClass());}

先使用密码登录,访问http://localhost/user/isRemembermeUser.do,后台接口返回false,再关闭浏览器再次访问这个地址,后台接口返回true,表示这次是使用rememberme进行的认证。

关于"springsecurity如何实现下次自动登录功能过程解析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

登录 浏览器 浏览 数据 用户 服务 数据库 方式 配置 成功 内容 再次 前台 文件 服务器 篇文章 功能 过程 参数 后台 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 虚拟的服务器 网络技术真的弊大于利吗 网络安全独角兽收入 计算机网络技术专业导 修复时找不到数据库引擎启动句柄 名词解释数据库系统网状模型 华为服务器自检特别卡 浙江质量网络技术咨询常见问题 电信移动联通云服务器 开源软件开发流程 数据库高级操作个人总结 电脑服务器装硬盘 莫纳什网络安全好吗 互联网金融与金融科技一样吗 永恒之塔无法连接到服务器 网络技术有限公司好吗 洛阳付费软件开发 学生基础数据库可以改成绩吗 数据库与网页之间的数据传递 苹果电脑做软件开发的优势 计算机网络技术c类网络地址 网络安全法明确 数据库的选择 朝阳区运营网络技术排名靠前 sql整个数据库误删除恢复 富士康软件开发面试流程多少时间 服务器硬件工作内容 浙江网络安全等级保护网首页 新罗区网络安全课 百当网互联网科技公司
0