javascript
springsecurity中session失效后怎样处理_结合Spring Security进行web应用会话安全管理
結合Spring Security進行web應用會話安全管理
在本文中,將為大家說明如何結合Spring Security 管理web應用的會話。如果您閱讀后覺得本文對您有幫助,期待您能關注、轉發!您的支持是我不竭的創作動力!
一、Spring Security創建使用session的方法
Spring Security提供4種方式精確的控制會話的創建:
- always:如果當前請求沒有session存在,Spring Security創建一個session。
- ifRequired(默認): Spring Security在需要時才創建session
- never: Spring Security將永遠不會主動創建session,但是如果session已經存在,它將使用該session
- stateless:Spring Security不會創建或使用任何session。適合于接口型的無狀態應用,該方式節省資源。
在Spring Security配置中加入session創建的策略。繼承WebSecurityConfigurerAdapter ,重寫configure(HttpSecurity http) 方法(為了方便移動端觀看,我將下列代碼非規范換行,一行中盡量簡短)
@Overrideprotected void configure(HttpSecurity http) throws Exception { http.sessionManagement() .sessionCreationPolicy( SessionCreationPolicy.IF_REQUIRED )}重要的是:該配置只能控制Spring Security如何創建與使用session,而不是控制整個應用程序。如果我們不明確指定,Spring Security可能不會創建session,但是我們的應用程序可能會創建session(一般spring應用的session管理交由Spring Session進行)!
二、會話超時管理
2.1 會話超時處理
會話超時之后,我們通常希望應用跳轉到一個指定的URL,顯示會話超時信息。可以使用如下的配置的代碼實現。
http.sessionManagement() //超時session跳轉頁面 .expiredUrl("/sessionExpired.html") //非法session跳轉頁面 .invalidSessionUrl("/invalidSession.html");2.2.會話超時時間配置
在Spring boot應用中有兩種設置會話超時時間的方式,Spring Security對這兩種方式完全兼容,即:當會話超時之后用戶需要重新登錄才能訪問應用:
- server.servlet.session.timeout=15m
- spring.session.timeout = 15m
第一種方式是springBoot應用自帶的session超時配置,第二種方式是我們使用Spring Session之后,提供的session超時配置。第二種方式的優先級更高。
三、Spring Security的會話固化保護
session-fixation-protection 即session的固化保護功能,該功能的目的是一定程度上防止非法用戶竊取用戶session及cookies信息,進而模擬session的行為。
默認情況下,Spring Security啟用了migrationSession保護方式。即對于同一個cookies的SESSIONID用戶,每次登錄驗證將創建一個新的HTTP會話,舊的HTTP會話將無效,并且舊會話的屬性將被復制。
如果這不是您需要的方式,則可以使用其他兩個選項:
- 設置為“none”時,原始會話不會無效
- 設置“newSession”后,將創建一個干凈的會話,而不會復制舊會話中的任何屬性
四、Cookie的安全
熟悉Session實現原理的朋友一定都知道,提高Cookies的安全性,實際上就是提高session的安全性。在Spring Boot中可以通過配置方式來實現:
server.servlet.session.cookie.http-only=trueserver.servlet.session.cookie.secure=true- httpOnly:如果為true,則瀏覽器腳本將無法訪問cookie
- secure:如果為true,則僅通過HTTPS連接發送cookie,HTTP無法攜帶cookie。
總結
以上是生活随笔為你收集整理的springsecurity中session失效后怎样处理_结合Spring Security进行web应用会话安全管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 应届硕士研究生算法岗秋招总结
- 下一篇: php 编写mysql_php编写数据写