springsecurity的remember me

基于持久化的token的方法

实现原理:将生成的 token 存入 cookie 中并发送到客户端浏览器,待到下次用户访问系统时,系统将直接从客户端 cookie 中读取 token 进行认证。

实现过程:

  1. 用户选择了 “记住我” 成功登录后,将会把 username、随机产生的序列号、生成的 token 存入一个数据库表中,同时将它们的组合生成一个 cookie 发送给客户端浏览器。
  2. 当下一次没有登录的用户访问系统时,首先检查 cookie,如果对应 cookie 中包含的 username、序列号和 token 与数据库中保存的一致,则表示其通过验证,系统将重新生成一个新的 token 替换数据库中对应组合的旧 token,序列号保持不变,同时删除旧的 cookie,重新生成包含新生成的 token,就的序列号和 username 的 cookie 发送给客户端。
  3. 如果检查 cookie 时,cookie 中包含的 username 和序列号跟数据库中保存的匹配,但是 token 不匹配。这种情况极有可能是因为你的 cookie 被人盗用了,由于盗用者使用你原本通过认证的 cookie 进行登录了导致旧的 token 失效,而产生了新的 token。这个时候 Spring Security 就可以发现 cookie 被盗用的情况,它将删除数据库中与当前用户相关的所有 token 记录,这样盗用者使用原有的 cookie 将不能再登录,同时提醒用户其帐号有被盗用的可能性。
  4. 如果对应 cookie 不存在,或者包含的 username 和序列号与数据库中保存的不一致,那么将会引导用户到登录页面。

2:使用持久化的token,必须在专门建立一张数据表:

1 create table persistent_logins (username varchar(64) not null,
2                                     series varchar(64) primary key,
3                                     token varchar(64) not null,
4                                     last_used timestamp not null)

通过 remember-me 元素来使用,只是这个时候我们需要其 data-source-ref 属性指定对应的数据源,且需要指明使用哪个user-service-ref="userDetailsService",如果没有配置专门的userDetailsService,将会使用默认的userDetailsService

需要增加的配置有:

在<http>节点加入下列一行代码

1 <security:remember-me key="elim" user-service-ref="userDetailsService" data-source-ref="dataSource"/>

配置userDetailsService

<bean id="userDetailsService" class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl">
        <property name="dataSource" ref="dataSource"/>
    </bean>

在登陆界面需要加一行代码:

1  <input  name="_spring_security_remember_me" type="checkbox" value="true"/>
2                      记住密码

name必须为_spring_security_remember_me

在登陆页面上选择记住密码登陆成功以后

查看cookie

				
时间: 2024-10-12 09:32:08

springsecurity的remember me的相关文章

SpringMVC + Mybatis + SpringSecurity(权限控制到方法按钮) + Rest(服务) + Webservice(服务) + Quartz(定时调度)+ Lucene(搜索引擎) + HTML5 bootstrap + Maven项目构建绝对开源平台

框架整合: Springmvc + Mybatis + Shiro(权限) + REST(服务) + WebService(服务) + JMS(消息) + Lucene(搜搜引擎) + Quartz(定时调度) + Bootstrap Html5(支持PC.IOS.Android) 需要源码请加Q:3121026417   此处[源码获取地址] 框架简介: 项目Maven构建,真实大型互联网架构,做到高并发,大数据处理,整个项目使用定制化服务思想,提供模块化.服务化.原子化的方案,将功能模块进行

springsecurity启动出现org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: You must use a 3.0 schema with Spring Security 3.0.

在换了spring-security的jar包以后启动出现org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: You must use a 3.0 schema with Spring Security 3.0.Please update your schema declarations to the 3.0.3 schema (spring-securi

springsecurity基于数据库验证用户

之前的springsecurity程序都是将数据存放在内存中的,通过 1 <security:user-service> 2 <security:user name="user" password="user" authorities="ROLE_USER"/> 3 <security:user name="admin" password="admin" authorities

Spring-Security完整实例

1.收集资料 http://blog.csdn.net/k10509806/article/details/6369131 http://www.cnblogs.com/wenxiu/archive/2011/01/22/1942084.html http://ootabc.iteye.com/blog/688213 http://wenku.baidu.com/view/abf23846336c1eb91a375d83.html http://www.cnblogs.com/zhanglian

SpringSecurity 自定义用户 角色 资源权限控制

1 package com.joyen.learning.security; 2 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 import java.util.List; 6 7 import org.springframework.context.support.MessageSourceAccessor; 8 import org.springframework.dao.DataAccessException;

SpringSecurity数据库中存储用户、角色、资源

这几天项目中用到了SpringSecurity做登陆安全.所以在这写一下也许可以帮助一下其他人,自己也熟悉一下 SpringSecurity配置文件如下: <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w

SpringSecurity 3.2入门(9)自定义权限控制代码实现

1. 一个自定义的filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性,我们的所有控制将在这三个类中实现 . package cn.jxufe.core.security; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.serv

SpringMVC+springSecurity+flexPaper 配置--类似百度文库在线预览

背景:现在项目需要做一个类似百度文库的在线预览功能,在网上找了下很多人推荐使用FlexPaper,所以今天尝试学习了FlexPaper顺便集成到现有的框架中 由于网上目前的说的都不是很详细,所以现在记录在此,希望对需要的人有所帮助 准备:1. FlexPaper_2.2.4.zip 下载地址:http://flexpaper.devaldi.com/download/             2.swftools 下载地址:http://www.swftools.org/download.htm

[转]springSecurity源码分析—DelegatingFilterProxy类的作用

使用过springSecurity的朋友都知道,首先需要在web.xml进行以下配置, <filter>  <filter-name>springSecurityFilterChain</filter-name>  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param>         <para

【JavaWeb】SSM+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(六)

Showings 我个人的项目,当前不断地在更新. 我希望做成一个好项目,同时,也是在锻炼自己的技术. 在项目中发现问题,学习知识,是比较可取的一条路子. 这样学习到的知识,虽然分散,但是都很实用,而且能够极大的加深程序设计与现实需求之间的关联. 网站地址:www.showings.com.cn Github源码[不断更新中]:https://github.com/wuxinzhe/HouseRent.git 这不算是一个多有技术含量的项目,我会不断在更新这个SAAS系统的功能,不断在完善业务逻