美文网首页
spring-security 2:remember me

spring-security 2:remember me

作者: 轻云绿原 | 来源:发表于2020-09-04 10:07 被阅读0次

持久化登录要用到的过滤器

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:重新登录一次

就会在上述的表里增加一行记录


数据库里的记录

相关文章

网友评论

      本文标题:spring-security 2:remember me

      本文链接:https://www.haomeiwen.com/subject/hkxosktx.html