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