springboot和springsecurity设置session的过期

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");
    }

猜你喜欢

转载自blog.csdn.net/qq_35953966/article/details/105603490