springsecurity6.1 http.remberme用法
时间: 2024-09-18 08:15:59 浏览: 80
Spring Security 6.1 中的 `http.rememberMe` 是用于启用“记住我”功能的部分,它允许用户登录后无需每次都输入凭据就能保持会话。以下是一个基本的用法概述:
1. 配置 `HttpSecurity` 对象:首先,在Web配置类中,你需要配置 `HttpSecurity` 对象,添加 `rememberMe()` 方法以启用记住我功能。
```java
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
// 其他授权规则...
.formLogin()
.loginPage("/login")
.permitAll() // 让所有请求都能访问登录页面
.and()
.rememberMe(); // 启用记住我功能
}
}
```
2. 生成并配置安全令牌管理器(TokenServices):通常需要创建一个 `TokenServices` 实现,如基于Cookie的 `InMemoryTokenRepositoryImpl`,用于存储用户的token。
```java
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.rememberme.InMemoryTokenRepositoryImpl;
@Bean
public TokenServices tokenServices() {
InMemoryTokenRepositoryImpl repository = new InMemoryTokenRepositoryImpl();
UsernamePasswordAuthenticationToken authentication = (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
String token = repository.generateToken(authentication.getName());
repository.setTokenInformation(token, authentication);
return repository;
}
```
3. 配置过滤器:记得添加相应的过滤器,比如 `RememberMeFilter`,以便在适当的时候处理cookie。
4. 客户端支持:确保前端(如HTML、JavaScript)能够正确处理设置和清除cookie。
阅读全文