RememberMeServices
public interface RememberMeServices { //当用用户进行到系统未登录是自动登录 Authentication autoLogin(HttpServletRequest request, HttpServletResponse response); //在用户登录失败的时候调用 void loginFail(HttpServletRequest request, HttpServletResponse response); //在用户登录成功后调用 void loginSuccess(HttpServletRequest request, HttpServletResponse response, Authentication successfulAuthentication); }
AbstractRememberMeServices
1. loginSuccess : 在玩家登录成功后调用这个方法,首先通过rememberMeRequested这个方法判断是否需要rememberMe,若需要,那么调用抽象方法onLoginSuccess
2. loginFail : 在玩家登录失败后调用方法,首先执行cancelCookie删除cookie;然后执行方法onLoginFail
3. autoLogin : 首先从cookie中获取到加密后的字符串,然后解析这个加密字符串,调用抽象方法processAutoLoginCookie执行自动登录,最后返回一个完整的Authentication
TokenBasedRememberMeServices
1. onLoginSuccess : 完成加密 MD5 ("username:tokenExpiryTime:password:key"),设置加密字符串到cookie(详细加密查询makeTokenSignature方法)
2. processAutoLoginCookie:通过解析出来的用户名调用getUserDetailsService().loadUserByUsername(cookieTokens[0])查询出UserDetails,然后在加密查询出来的UserDetails,比较cookie中加密的字符串和查询出来的UserDetails加密字符串,若相同,完成自动登录
PersistentTokenBasedRememberMeServices
1. onLoginSuccess : 保存用户登录信息PersistentRememberMeToken到数据库和cookie(不会保存用户名到cookie,相对更安全)
2. processAutoLoginCookie : 通过解析出cookie中的数据,查询数据库中的PersistentRememberMeToken,检验查询出来的PersistentRememberMeToken是否过期,正确等等,最后查询出UserDetails,完成登录
3.对PersistentRememberMeToken做的数据库操作都是通过PersistentTokenRepository来完成的
TokenBasedRememberMeServices来实现的RememberMe
在项目的security.xml文件中添加如下代码:
<security:http> <security:intercept-url pattern="/**" access="ROLE_USER"/> <security:form-login/> <security:logout logout-url="/logout"/> <security:remember-me key="chapter4"/> </security:http>
PersistentTokenBasedRememberMeServices来实现RememberMe
1. 在数据库执行sql:
CREATE TABLE persistent_logins ( username VARCHAR(64) NOT NULL, series VARCHAR(64) PRIMARY KEY, token VARCHAR(64) NOT NULL, last_used TIMESTAMP NOT NULL );
2. 修改security.xml文件:
<security:http> <security:intercept-url pattern="/**" access="ROLE_USER"/> <security:form-login/> <security:logout logout-url="/logout"/> <security:remember-me data-source-ref="securityDataSource"/> </security:http>
这里可以配置token-repository-ref或者data-source-ref 效果都是一样
<security:http> <security:intercept-url pattern="/**" access="ROLE_USER"/> <security:form-login/> <security:logout logout-url="/logout"/> <security:remember-me token-repository-ref="jdbcTokenRepositoryImpl"/> </security:http> <bean id="jdbcTokenRepositoryImpl" class="org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl"> <property name="dataSource" ref="securityDataSource"/> </bean>
相关推荐
10.4. Remember-Me 接口和实现 10.4.1. TokenBasedRememberMeServices 10.4.2. PersistentTokenBasedRememberMeServices 11. 会话管理 11.1. SessionManagementFilter 11.2. ...
基于用户,角色,权限的spring_security完整项目 博文链接:https://abc08010051.iteye.com/blog/1995648
10.4. Remember-Me接口和实现 10.4.1. TokenBasedRememberMeServices 10.4.2. PersistentTokenBasedRememberMeServices 11. 会话管理 11.1. SessionManagementFilter 11.2. SessionAuthenticationStrategy...
Spring Security 参考 1 第一部分前言 15 1.入门 16 2.介绍 17 2.1什么是Spring Security? 17 2.2历史 19 2.3版本编号 20 2.4获得Spring安全 21 2.4.1使用Maven 21 Maven仓库 21 Spring框架 22 2.4.2 Gradle 23 ...
10.4. Remember-Me接口和实现 10.4.1. TokenBasedRememberMeServices 10.4.2. PersistentTokenBasedRememberMeServices 11. 会话管理 11.1. SessionManagementFilter 11.2. SessionAuthenticationStrategy ...
该资源是基本Spring Security实战七篇文档中组织的源码,详情...ssecurity-rememberMe项目是Spring Security实战(七)的源码; 本人开发工具是IDEA,每个项目中的代码均可以运行并测试。Eclipse也是一样可以运行的。
spring boot +spring security +thymeleaf 实现简单权限+remember-me功能
主要介绍了Spring Security 构建rest服务实现rememberme 记住我功能,需要的朋友可以参考下
主要给大家介绍了关于Spring Security学习之rememberMe自动登录的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
主要介绍了Spring Security Remember me使用及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
用户登录(使用RememberMe) 使用简单(单个)角色 方法级别的安全性(@PreAuthorize) XSS和CSRF测试 下一个 用户认证管理 参考 快速开始 预装 JDK 1.8(或Java 10) Maven的3.5 吉特 跑步 git clone ...
进阶-使用Spring Security3.2搭建LDAP认证授权和Remember-me
主要介绍了SpringSecurity rememberme功能实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
摘要认证的密码加密通用密码加密Remember-Me(记住我)认证:基于散列的令牌方法Remember-Me(记住我)认证:基于持久化的令牌方法OAuth 2.
springsecurity3.0.5简单例子 当用firefox访问时产生的临时cookie,在下次访问中还存在的话,获取的session还是原来的session(user验证信息不变),如果把那个临时cookie删除的话,则springsecuriyt生成新的session...
Spring Security 学习 使用Spring Boot 2.0 为框架,学习Spring Security。 已完成功能: ...实现RememberMe功能。 使用Redis记录Spring Session。 简单完成各种情况下从Ajax请求跳转到页面的处理。
NULL 博文链接:https://lengyun3566.iteye.com/blog/1141347
实现免登陆验证(Remember-Me验证) 提供一系列标签库进行页面元素的安全控制 方法安全 通过AOP模式实现安全代理 Web安全与方法安全均可以使用表达式语言定义访问规则 5、配置SS 配置Web.xml,应用安全过滤器 配置...
Spring Boot Shiro Remember Me Spring Boot Shiro权限控制 Spring Boot Shiro Redis Spring Boot Shiro Ehcache Spring Boot Thymeleaf中使用Shiro标签 Spring Boot Shiro在线会话管理 Spring Boot Shiro整合JWT 三...
适合的版本才是最好的,最新的可能有些不稳定; 之前遇到过 druid 启动器版本的问题; 事实证明追求最新版本会有些许问题,就像majora等linux一样; 稳定才是我们需要的