Spring Security3 remember me功能实现

remember Me. 很多网站,比如博客园,在登录页面就有这个选项,勾选“下次自动登录”后,在一定时间段内,只要不清空浏览器Cookie,就可以自动登录

可参考文章:http://www.cnblogs.com/yjmyzz/p/remember-me-sample-in-spring-security3.html

1.建立一张用于存放登录信息的表(persistent_logins)   这个是默认的

--Remember Me持久化保存记录
create table PERSISTENT_LOGINS
(
  username  VARCHAR2(64) not null,
  series   VARCHAR2(64) not null,
  token     VARCHAR2(64) not null,
  last_used DATE not null
);
alter table PERSISTENT_LOGINS
  add constraint PK_PERSISTENT_LOGIN primary key (series);

 
2.登录页面添加记录登录的checkbox 

下面的name=“remember-me”与spring配置的 remember-me-parameter="remember-me"对应,默认是_spring_security_remember_me

 <tr>
    <td align="right">一周内自动登录:</td>
    <td><input type="checkbox" name="remember-me" id="remember-me"></td>
 </tr>
3.spring security配置文件添加数据库remember me配置,位于http标签中,

参数data-source-ref:是数据源、 token-validity-seconds:到期时间,默认2周、remember-me-parameter:与登录也复选框name属性对应

<remember-me data-source-ref="dataSource" token-validity-seconds="1209600" remember-me-parameter="remember-me"  />
4. 在用户登录的表单进行提交时,选中remeber-me的复选框,这样在登录时就会自动在数据库中插入一条记录数据

在jsp前端检查是否Remember Me自动登录很简单,直接使用security提供的tag标签即可,类似下面这样:

1 <%@taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
2 ...
3 <sec:authorize access="isRememberMe()">
4         ...    
5 </sec:authorize>

在java 服务端的Controller中,可这样检测:



logout时,该记录以及客户端的cookie都会同时清空。

最后,如果不想用默认的表名persistent_logins,可研究下:

org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl

org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices

这二个类的源码 以及 相关文章:

http://forum.spring.io/forum/spring-projects/security/126343-spring-3-1-persistenttokenbasedremembermeservices-and-usernamepasswordauthentication

http://www.fengfly.com/document/springsecurity3/remember-me.html

http://docs.huihoo.com/spring/spring-security/3.0.x/remember-me.html#remember-me-persistent-token



未完待需。。。











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值