9.4.3 启用 Remember-me 功能
对于应用程序来讲,能够对用户进行认证是非常重要的。但是站在用户的角度来讲,如果应用程序不用每次都提示他们登录是更好的。这就是为什么许多站点提供了 Remember-me 功能,你只要登录过一次,应用就会记住你,当再次回到应用的时候你就不需要登录了。
Spring Security 使得为应用添加 Remember-me 功能变得非常容易。为了启用这项功能,只需在 configure() 方法所传入的 HttpSecurity 对象上调用 rememberMe() 即可。
1
@Override
2
protected void configure(HttpSecurity http) throws Exception {
3
http
4
.formLogin()
5
.loginPage("/login");
6
.and()
7
.rememberMe()
8
.tokenValiditySeconds(2419200)
9
.key("spittrKey")
10
...
11
}
Copied!
在这里,我们通过一点特殊的配置就可以启用 Remember-me 功能。默认情况下,这个功能是通过在 cookie 中存储一个 token 完成的,这个 token 最多两周内有效。但是,在这里,我们指定这个 token 最多四周内有效(2,419,200秒)。
存储在 cookie 中的 token 包含用户名、密码、过期时间和一个私钥 —— 在写入 cookie 前都进行了 MD5 哈希。默认情况下,私钥的名为 SpringSecured,但在这里我们将其设置为 spitterKey,使它专门用于 Spittr应用。
如此简单。既然 Remember-me 功能已经启用,我们需要有一种方式来让用户表明他们希望应用程序能够记住他们。为了实现这一点,登录请求必须包含一个名为 remember-me 的参数。在登录表单中,增加一个简单复选框就可以完成这件事情:
1
<input id="remember_me" name="remember-me" type="checkbox" />
2
<label for="remember_me" class="inline">Remember me</label>
Copied!
在应用中,与登录同等重要的功能就是退出。如果你启用 Rememberme 功能的话,更是如此,否则的话,用户将永远登录在这个系统中。我们下面将看一下如何添加退出功能。
Last modified 2yr ago
Copy link