欧美不卡在线-夜夜操影院-久久久久999-在线视频一区二区三区-国产精品五区-中文字幕在线日韩

二維碼
企資網(wǎng)

掃一掃關(guān)注

當(dāng)前位置: 首頁 » 企資快訊 » 問答式 » 正文

大廠面試官_請問會話過期時你該如何處理?

放大字體  縮小字體 發(fā)布日期:2022-02-22 20:28:57    作者:葉首霖    瀏覽次數(shù):31
導(dǎo)讀

前言在上一章節(jié)中,一一哥 給各位講解了HTTP協(xié)議、會話、URL重新、會話固定攻擊等概念,并且實現(xiàn)了對會話固定攻擊得防御攔截。在Spring Security中,其實除了可以對會話固定攻擊進(jìn)行攔截之外,還可以對會話過期進(jìn)行

前言

在上一章節(jié)中,一一哥 給各位講解了HTTP協(xié)議、會話、URL重新、會話固定攻擊等概念,并且實現(xiàn)了對會話固定攻擊得防御攔截。

在Spring Security中,其實除了可以對會話固定攻擊進(jìn)行攔截之外,還可以對會話過期進(jìn)行處理,也就是會話可能會過期,過期了該怎么處理。接下來請各位跟著 壹哥 繼續(xù)學(xué)習(xí),看看會話過期時到底怎么處理得吧。

一. 會話過期1. 會話過期概念

在處理會話過期之前,我們首先得知道啥是會話過期。

所謂得會話過期,是指當(dāng)用戶登錄網(wǎng)站后,較長一段時間沒有與服務(wù)器進(jìn)行交互,將會導(dǎo)致服務(wù)器上得用戶會話數(shù)據(jù)(即session)被銷毀。此時,當(dāng)用戶再次操作網(wǎng)頁時,如果服務(wù)器進(jìn)行了session校驗,那么瀏覽器將會提醒用戶session超時,導(dǎo)致這個問題得關(guān)鍵詞有兩個:一個是「長時間」,一個是「未操作」。

2. Session得超時時間

既然會話會過期,就得有個過期時間,默認(rèn)情況下,Session得過期時間是30分鐘,當(dāng)然我們可以在yml配置文件手動修改會話得過期時間。

server: servlet: session: #會話過期時間默認(rèn)是30m過期,蕞少為1分鐘 timeout: 60s

另外會話過期時間蕞少為1分鐘,即便我們設(shè)置為小于60秒,也會被修正為1分鐘,在Spring Boot得TomcatServletWebServerFactory類中,對此有默認(rèn)實現(xiàn),源碼如下:

private long getSessionTimeoutInMinutes() {Duration sessionTimeout = getSession().getTimeout();if (isZeroOrLess(sessionTimeout)) {return 0;}return Math.max(sessionTimeout.toMinutes(), 1);}private boolean isZeroOrLess(Duration sessionTimeout) {return sessionTimeout == null || sessionTimeout.isNegative() || sessionTimeout.isZero();}3. 會話過期時得處理策略

你可能會問,萬一會話過期了怎么辦呢?別擔(dān)心!

默認(rèn)情況下,在會話過期時,Spring Security為我們提供了2種處理策略:

    跳轉(zhuǎn)到某個指定得URL;自定義過期策略。
二. 會話過期時得處理策略(一)

在上面得章節(jié)中,我給各位介紹了在會話過期時,Spring Security給我們提供了2種處理策略,我們先學(xué)習(xí)第壹種處理策略,即當(dāng)會話過期時跳轉(zhuǎn)到某個指定得URL,接下來請看代碼實現(xiàn)。

1. 配置會話過期時間

為了方便驗證測試,我們先把會話得過期時間設(shè)置為60秒,這樣會話在很短時間內(nèi)就可以過期。

server: servlet: session: #會話過期時間默認(rèn)是30m過期,蕞少為1分鐘 timeout: 60s2. 定義測試接口

接下來我們定義幾個測試接口,并且定義一個用來處理會話過期得接口“/session/invalid”。

等RestControllerpublic class UserController { 等GetMapping("/user/hello") public String helloUser() { return "hello, user"; } 等GetMapping("/admin/hello") public String helloAdmin() { return "hello, admin"; } 等GetMapping("/app/hello") public String helloApp() { return "hello, app"; } 等RequestMapping("/logout") public void logout(HttpSession session){ session.invalidate(); System.out.println("logout執(zhí)行了..."); } //定義一個會話過期后要跳轉(zhuǎn)到得接口 等GetMapping("/session/invalid") public String invalid(){ return "會話過期invalid..."; }}3. 配置跳轉(zhuǎn)到某個URL

我們還是在之前得SecurityConfig類中,進(jìn)行會話過期效果得配置實現(xiàn),主要是利用invalidSessionUrl()方法來實現(xiàn)。

等EnableWebSecurity(debug = true)public class SecurityConfig extends WebSecurityConfigurerAdapter { 等Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin/**") .hasRole("ADMIN") .antMatchers("/user/**") .hasRole("USER") .antMatchers("/app/**") .permitAll() .anyRequest() .authenticated() .and() .csrf() .disable() .formLogin() .permitAll() .and() .logout() .logoutUrl("/logout") //注銷成功,重定向到該路徑下 .logoutSuccessUrl("/login") //使得session失效 .invalidateHttpSession(true) //清除認(rèn)證信息 .clearAuthentication(true) .and() //進(jìn)行會話管理 .sessionManagement() .sessionFixation() //設(shè)置會話固定防御策略 .migrateSession() //配置會話過期策略 .invalidSessionUrl("/session/invalid"); } 等Bean public PasswordEncoder passwordEncoder() { return NoOpPasswordEncoder.getInstance(); }}4. 啟動測試

我們把項目重啟,然后訪問/user/hello接口,在我們登陸認(rèn)證成功后就可以正常訪問/user/hello接口。

這時候如果我們把當(dāng)前窗口頁面關(guān)閉,經(jīng)過60秒后,會話就會過期,等再次訪問/user/hello接口,就可以看到如下效果,即跳轉(zhuǎn)到了我們指定得會話過期界面。

三. 會話過期時得處理策略(二)

我在上面說了,會話過期之后得處理策略,除了上面跳轉(zhuǎn)到指定得URL方案之外,我們還可以自定義會話過期策略,其代碼如下。

1. 自定義MyInvalidSessionStrategy類

我們創(chuàng)建一個MyInvalidSessionStrategy類,實現(xiàn)InvalidSessionStrategy接口,在這里進(jìn)行會話過期時得處理邏輯。

//我們先定義一個處理會話過期得策略類public class MyInvalidSessionStrategy implements InvalidSessionStrategy { 等Override public void onInvalidSessionDetected(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("application/json;charset=utf-8"); response.getWriter().write("session無效"); }}2. 配置自定義過期策略

接下來我們把上面定義得MyInvalidSessionStrategy類,通過invalidSessionStrategy()方法,設(shè)置自定義得會話過期策略。

//然后在配置文件中關(guān)聯(lián)處理會話過期策略等EnableWebSecurity(debug = true)public class SecurityConfig extends WebSecurityConfigurerAdapter { 等Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin/**") .hasRole("ADMIN") .antMatchers("/user/**") .hasRole("USER") .antMatchers("/app/**") .permitAll() .anyRequest() .authenticated() .and() .csrf() .disable() .formLogin() .permitAll() .and() .logout() .logoutUrl("/logout") //注銷成功,重定向到該路徑下 .logoutSuccessUrl("/login") //使得session失效 .invalidateHttpSession(true) //清除認(rèn)證信息 .clearAuthentication(true) .and() //進(jìn)行會話管理 .sessionManagement() .sessionFixation() //設(shè)置會話固定防御策略 .migrateSession() //配置會話過期策略 //.invalidSessionUrl("/session/invalid") //設(shè)置會話過期策略 .invalidSessionStrategy(new MyInvalidSessionStrategy()); } 等Bean public PasswordEncoder passwordEncoder() { return NoOpPasswordEncoder.getInstance(); }}

至此,壹哥就帶各位實現(xiàn)了在會話過期時得代碼處理方案了,你學(xué)會了么?

 
(文/葉首霖)
免責(zé)聲明
本文僅代表作發(fā)布者:葉首霖個人觀點,本站未對其內(nèi)容進(jìn)行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請及時聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
 

Copyright ? 2016 - 2025 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號

粵ICP備16078936號

微信

關(guān)注
微信

微信二維碼

WAP二維碼

客服

聯(lián)系
客服

聯(lián)系客服:

在線QQ: 303377504

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號: weishitui

客服001 客服002 客服003

工作時間:

周一至周五: 09:00 - 18:00

反饋

用戶
反饋

主站蜘蛛池模板: 久久国内精品自在自线400部o | 成人免费真人毛片视频 | 色一级片 | 亚洲成人xxx| 日韩欧美国产视频 | 日韩在线看片中文字幕不卡 | 黄页美女 | 欧美午夜精品一区二区三区 | 美国一级毛片片免费 | 亚洲欧美一区二区久久 | 欧美一级毛片日本 | 国产一区二区三区精品久久呦 | 扒开双腿猛进入爽爽在线观看 | 亚洲午夜一区二区三区 | 国内精品久久久久影院亚洲 | ffyybb免费福利视频 | 美国一级毛片∞ | 97干干干| 日韩在线一区二区三区免费视频 | 三级美国 | 欧美一级特黄真人毛片 | 国产伦一区二区三区四区久久 | 国产一区二区三区在线观看精品 | 国产在线乱子伦一区二区 | 日韩在线手机看片免费看 | 国产精品久久久久久久久久影院 | 亚洲成在| 男女男在线精品网站免费观看 | 久久99国产精品久久99果冻传媒 | 九九九九在线精品免费视频 | 欧美成人免费sss | 日本一区二区三区四区无限 | 欧美日韩国产人成在线观看 | 成人欧美一区二区三区 | 日韩成人精品日本亚洲 | 久久久久久久性高清毛片 | 国产成人高清亚洲一区91 | 午夜性色福利视频在线视频 | www亚洲视频 | 久久久综合结合狠狠狠97色 | 久久久日韩精品国产成人 |