文章目录
1. springboot中设置session过期
yml配置
server:
servlet:
session:
timeout: 1800 # session超时时间为30分钟
properties配置
server.servlet.session.timeout=1800
注:我的环境是springboot2.2.6不同可能版本配置出现异常自行百度解决
注:如果设置的session超时时间低于1分钟,springboot按一分钟来设置
到这里算是配置好了但只限在前后端不分离的项目中,因为当session过期时会走你写的未登录逻辑
但在前后端分离的项目,后端都是以json形式返回数据因此我们在springsecurity中来配置
2. springsecurity中配置通知用户超时
//设置session超时管理
.sessionManagement()
//设置session超时时跳转的url
.invalidSessionUrl("/session/invalid")
当session过期时会自动跳转到/session/invalid路径
我们只需要在controller中给予用户响应的提示
@GetMapping("/session/invalid")
@ResponseStatus(code = HttpStatus.UNAUTHORIZED)
public RespBean sessionInvalid() {
return RespBean.error("Session超时,请重新登陆");
}
RespBean是自定义的响应bean
springsecurity会自动保护项目中的所有接口,因此需要配置让其忽略/session/invalid
3. springsecurity中配置忽略的接口
@Override
public void configure(WebSecurity web) throws Exception {
//配置不走SpringSecurity验证的url
web.ignoring().antMatchers("/session/invalid");
}