0
点赞
收藏
分享

微信扫一扫

Spring Security3 remember me功能实现


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

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的复选框,这样在登录时就会自动在数据库中插入一条记录数据


Spring Security3 remember 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



未完待需。。。





举报

相关推荐

0 条评论