SpringSecurity 中 ,tohen 过期了然后页面就显示403,然后使他跳转到登陆页面
时间: 2024-02-11 15:08:23 浏览: 194
Vue利用路由钩子token过期后跳转到登录页的实例
5星 · 资源好评率100%
当 Spring Security 中的 token 过期时,页面会显示 403 Forbidden 错误,因为此时用户无法通过 token 进行身份验证。为了解决这个问题,可以通过配置 Spring Security,使其在 token 过期时自动跳转到登录页面。
具体实现方式如下:
1. 配置 Spring Security 的 session 管理:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.sessionManagement()
.invalidSessionUrl("/login")
.maximumSessions(1)
.expiredUrl("/login");
}
}
```
2. 在登录页面的控制器中添加一个处理过期的方法:
```java
@Controller
public class LoginController {
@GetMapping("/login")
public String login(HttpServletRequest request) {
if (request.getParameterMap().containsKey("error")) {
return "login?error";
}
if (request.getParameterMap().containsKey("logout")) {
return "login?logout";
}
if (request.getParameterMap().containsKey("expired")) {
return "login?expired";
}
return "login";
}
@GetMapping("/login?expired")
public String expired() {
return "redirect:/login?expired=true";
}
}
```
这样,当 token 过期时,用户访问受保护的页面时会自动跳转到登录页面,并且 URL 参数中会包含 "expired=true",以便在登录页面中显示相应的提示信息。
阅读全文