spring boot设置session失效时间,springbootsession 失效时间

  spring boot设置session失效时间,springbootsession 失效时间

  

目录

设置会议失效时间及失效跳转会议失效后如何跳转到会议失效地址设置会议失效的几种方式如果是1.5.6版本还可以设置

 

  

设置Session失效时间及失效跳转

#会话超时时间设置,单位是秒,默认是30分钟服务器。servlet。会话。超时=10然而并没有什么用,因为跳羚在TomcatServletWebServerFactory代码中写了这个

 

  private long getSessionTimeoutInMinutes(){ Duration会话超时=this。getsession().gettime out();返回这个。iszeroorless(会话超时)?0L :数学。最大(会话超时。托米明特斯(1L);}如果说某些人看不懂持续时间这个类是什么,我不推荐你接着看下去了,因为没有什么帮助。

  

Session失效后如何跳转到Session失效地址

包cn。核心气。安全。配置;导入cn。核心气。安全。过滤器。smscodefilter导入cn。核心气。安全。过滤器。validatecodefilter导入org。spring框架。豆子。工厂。注释。自动连线;导入org。spring框架。语境。注释。豆;导入org。spring框架。语境。注释。配置;导入org。spring框架。安全。配置。注释。网络。建筑商。http安全;导入org。spring框架。安全。配置。注释。网络。配置。websecurityconfigureradapter导入组织。spring框架。安全。密码。密码。nooppasswordencoder导入org。spring框架。安全。密码。密码。密码编码器;导入组织。spring框架。安全。网络。正宗的。authenticationfailurehandler导入组织。spring框架。安全。网络。正宗的。authenticationsuccesshandler导入组织。spring框架。安全。网络。正宗的。usernamepasswordtuthenticationfilter;@配置公共类WebSecurityConfig扩展WebSecurityConfigurerAdapter { @ auto wired private AuthenticationSuccessHandler coreqiAuthenticationSuccessHandler;@ auto wired private AuthenticationFailureHandler coreqiAuthenticationFailureHandler;@ Autowired private SmsCodeAuthenticationSecurityConfig SmsCodeAuthenticationSecurityConfig;@ Bean公共密码编码器password encoder(){ return nooppasswordencoder。getinstance();} @覆盖受保护的void配置(http安全http)抛出异常{ ValidateCodeFilter ValidateCodeFilter=new ValidateCodeFilter();validateCodeFilter.setAuthen

 

  ticationFailureHandler(coreqiAuthenticationFailureHandler);        SmsCodeFilter smsCodeFilter = new SmsCodeFilter();        //http.httpBasic()    //httpBasic登录 BasicAuthenticationFilter        http.addFilterBefore(smsCodeFilter, UsernamePasswordAuthenticationFilter.class)    //加载用户名密码过滤器的前面                .addFilterBefore(validateCodeFilter, UsernamePasswordAuthenticationFilter.class)    //加载用户名密码过滤器的前面                .formLogin()    //表单登录 UsernamePasswordAuthenticationFilter                    .loginPage("/coreqi-signIn.html")  //指定登录页面                    //.loginPage("/authentication/require")                    .loginProcessingUrl("/authentication/form") //指定表单提交的地址用于替换UsernamePasswordAuthenticationFilter默认的提交地址                    .successHandler(coreqiAuthenticationSuccessHandler) //登录成功以后要用我们自定义的登录成功处理器,不用Spring默认的。                    .failureHandler(coreqiAuthenticationFailureHandler) //自己体会把                .and()                .sessionManagement()                    .invalidSessionUrl("session/invalid")    //session过期后跳转的URL                .and()                .authorizeRequests()    //对授权请求进行配置                    .antMatchers("/coreqi-signIn.html","/code/image","/session/invalid").permitAll() //指定登录页面不需要身份认证                    .anyRequest().authenticated()  //任何请求都需要身份认证                    .and().csrf().disable()    //禁用CSRF                .apply(smsCodeAuthenticationSecurityConfig);            //FilterSecurityInterceptor 整个SpringSecurity过滤器链的最后一环    }}

    @GetMapping("/session/invalid")    @ResponseStatus(code = HttpStatus.UNAUTHORIZED)    public SimpleResponse sessionInvalid(){        String message = "session失效";        return new SimpleResponse(message);    }

 

  

设置Session失效的几种方式

 

  

如果是1.5.6版本

这里可以在application中加上bean文件

 

  

package com.example.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;import org.springframework.context.annotation.Bean;@SpringBootApplicationpublic class DemoApplication {undefinedpublic static void main(String[] args) { SpringApplication.run(DemoApplication.class, args);}//设置session过期时间@Beanpublic EmbeddedServletContainerCustomizer containerCustomizer() { return new EmbeddedServletContainerCustomizer() { public void customize(ConfigurableEmbeddedServletContainer container) { container.setSessionTimeout(7200);// 单位为S } };}}

 

  

 

  

还可以设置

application.yml

 

  

server:port: 8081servlet:session:timeout: 60s

 

  

@RestControllerpublic class HelloController {undefined@PostMapping("test")public Integer getTest(@RequestParam("nyy")String nn, HttpServletRequest httpServletRequest ){ HttpSession session = httpServletRequest.getSession(); session.setMaxInactiveInterval(60); int maxInactiveInterval = session.getMaxInactiveInterval(); long lastAccessedTime = session.getLastAccessedTime(); return maxInactiveInterval;}}

 

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: