最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot2.x設(shè)置Session失效時(shí)間及失效跳轉(zhuǎn)方式

 更新時(shí)間:2022年03月17日 11:07:13   作者:奇  
這篇文章主要介紹了SpringBoot2.x設(shè)置Session失效時(shí)間及失效跳轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

設(shè)置Session失效時(shí)間及失效跳轉(zhuǎn)

#Session超時(shí)時(shí)間設(shè)置,單位是秒,默認(rèn)是30分鐘
?server.servlet.session.timeout=10

然而并沒有什么用,因?yàn)镾pringBoot在TomcatServletWebServerFactory代碼中寫了這個(gè)

? ? private long getSessionTimeoutInMinutes() {
? ? ? ? Duration sessionTimeout = this.getSession().getTimeout();
? ? ? ? return this.isZeroOrLess(sessionTimeout) ? 0L : Math.max(sessionTimeout.toMinutes(), 1L);
? ? }

如果說某些人看不懂 Duration 這個(gè)類是什么,我不推薦你接著看下去了,因?yàn)闆]有什么幫助。

Session失效后如何跳轉(zhuǎn)到Session失效地址

package cn.coreqi.security.config;?
import cn.coreqi.security.Filter.SmsCodeFilter;
import cn.coreqi.security.Filter.ValidateCodeFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
? ? @Autowired
? ? private AuthenticationSuccessHandler coreqiAuthenticationSuccessHandler;
? ? @Autowired
? ? private AuthenticationFailureHandler coreqiAuthenticationFailureHandler;
? ? @Autowired
? ? private SmsCodeAuthenticationSecurityConfig smsCodeAuthenticationSecurityConfig;
? ? @Bean
? ? public PasswordEncoder passwordEncoder(){
? ? ? ? return NoOpPasswordEncoder.getInstance();
? ? }
? ? @Override
? ? protected void configure(HttpSecurity http) throws Exception {
? ? ? ? ValidateCodeFilter validateCodeFilter = new ValidateCodeFilter();
? ? ? ? validateCodeFilter.setAuthenticationFailureHandler(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默認(rèn)的提交地址
? ? ? ? ? ? ? ? ? ? .successHandler(coreqiAuthenticationSuccessHandler) //登錄成功以后要用我們自定義的登錄成功處理器,不用Spring默認(rèn)的。
? ? ? ? ? ? ? ? ? ? .failureHandler(coreqiAuthenticationFailureHandler) //自己體會(huì)把
? ? ? ? ? ? ? ? .and()
? ? ? ? ? ? ? ? .sessionManagement()
? ? ? ? ? ? ? ? ? ? .invalidSessionUrl("session/invalid") ? ?//session過期后跳轉(zhuǎn)的URL
? ? ? ? ? ? ? ? .and()
? ? ? ? ? ? ? ? .authorizeRequests() ? ?//對授權(quán)請求進(jìn)行配置
? ? ? ? ? ? ? ? ? ? .antMatchers("/coreqi-signIn.html","/code/image","/session/invalid").permitAll() //指定登錄頁面不需要身份認(rèn)證
? ? ? ? ? ? ? ? ? ? .anyRequest().authenticated() ?//任何請求都需要身份認(rèn)證
? ? ? ? ? ? ? ? ? ? .and().csrf().disable() ? ?//禁用CSRF
? ? ? ? ? ? ? ? .apply(smsCodeAuthenticationSecurityConfig);
? ? ? ? ? ? //FilterSecurityInterceptor 整個(gè)SpringSecurity過濾器鏈的最后一環(huán)
? ? }
}
? ? @GetMapping("/session/invalid")
? ? @ResponseStatus(code = HttpStatus.UNAUTHORIZED)
? ? public SimpleResponse sessionInvalid(){
? ? ? ? String message = "session失效";
? ? ? ? return new SimpleResponse(message);
? ? }

設(shè)置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;
@SpringBootApplication
public class DemoApplication {undefined
public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
}
//設(shè)置session過期時(shí)間
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
    return new EmbeddedServletContainerCustomizer() {
        public void customize(ConfigurableEmbeddedServletContainer container) {
            container.setSessionTimeout(7200);// 單位為S
        }
    };
}
}

還可以設(shè)置

application.yml

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

@RestController
public 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;
}
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

太仆寺旗| 温州市| 滦平县| 平武县| 桐城市| 荆州市| 若羌县| 高安市| 淮南市| 报价| 扶风县| 洮南市| 白银市| 依兰县| 泽普县| 且末县| 莒南县| 平乐县| 全州县| 白城市| 嵩明县| 宜州市| 石柱| 天柱县| 那坡县| 阿克| 远安县| 正宁县| 黔江区| 池州市| 富源县| 双辽市| 奇台县| 鄂托克旗| 土默特右旗| 方正县| 恩施市| 乡宁县| 乳山市| 弥渡县| 淳化县|