持久化登录要用到的过滤器
1:在配置spring-security.xml
里开启
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
https://www.springframework.org/schema/security/spring-security.xsd">
<!-- 配置security-->
<!-- auto-config="true"表示自动加载springSecurity的配置文件-->
<security:http auto-config="true" use-expressions="true">
<!--持久化登录 生成一个token-->
<security:remember-me token-validity-seconds="60"/>
</security:http>
</beans>
2:在登录时开启
键必须是
remember-me
不能改,值有四个都可以开启,分别为true
,yes
,on
,1
.
如果要改也行<remember-me>
增加一个属性remember-me-parameter="XXXX"
,我没试过。
<security:remember-me token-validity-seconds="60" data-source-ref="dataSource" remember-me-parameter="token"/>
<form method="post" action="/login">
<security:csrfInput/>
用户名:<input type="text" name="username"/><br/>
密码:<input type="text" name="password" /><br >
记住我:<input type="checkbox" name="remember-me" value="true"/>
<input type="submit" value="登录"><br />
</form>
3:这样会在cookie
保存一个键值对
cookie里的值
4:如何数据库里保存token
就必须按下面的模板创建一张表,表名,字段都不能改。改了就不能用了。
create table `persistent_logins` (
`username` varchar(64) not null,
`series` varchar(64) not null,
`token` varchar(64) not null,
`last_used` timestamp not null,
primary key (`series`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
5:开启token持久化,保存在数据库里
<security:remember-me token-validity-seconds="60" data-source-ref="dataSource"/>
6:重新登录一次
就会在上述的表里增加一行记录
数据库里的记录
网友评论