SpringBoot設置Session失效時間的解決方案
springboot的yml文件中設置session的過期時間
#Session超時時間設置,單位是秒,默認是30分鐘
servlet:
session:
timeout: 3600s當過期時間是大于1分鐘的時候是沒有什么問題的,但是如果設置過期時間小于1分鐘,就會失效。
servlet:
session:
timeout: 10因為SpringBoot在TomcatServletWebServerFactory為session的過期時間做了優(yōu)化。
Session的配置configureSession
private void configureSession(Context context) {
long sessionTimeout = this.getSessionTimeoutInMinutes();
context.setSessionTimeout((int)sessionTimeout);
Boolean httpOnly = this.getSession().getCookie().getHttpOnly();
if (httpOnly != null) {
context.setUseHttpOnly(httpOnly);
}
if (this.getSession().isPersistent()) {
Manager manager = context.getManager();
if (manager == null) {
manager = new StandardManager();
context.setManager((Manager)manager);
}
this.configurePersistSession((Manager)manager);
} else {
context.addLifecycleListener(new TomcatServletWebServerFactory.DisablePersistSessionListener());
}
}我們看到long sessionTimeout = this.getSessionTimeoutInMinutes();過期時間取自getSessionTimeoutInMinutes方法。
private long getSessionTimeoutInMinutes() {
Duration sessionTimeout = this.getSession().getTimeout();
return this.isZeroOrLess(sessionTimeout) ? 0L : Math.max(sessionTimeout.toMinutes(), 1L);
}在這里對sessionTimeout 進行判斷,首先判斷是否為0或者更少isZeroOrLess方法
private boolean isZeroOrLess(Duration sessionTimeout) {
return sessionTimeout == null || sessionTimeout.isNegative() || sessionTimeout.isZero();
}將sessionTimeout轉(zhuǎn)換為分鐘sessionTimeout.toMinutes()
public long toMinutes() {
return seconds / SECONDS_PER_MINUTE;
}
/**
* Seconds per minute.
*/
static final int SECONDS_PER_MINUTE = 60;將轉(zhuǎn)換后的值和1L進行比較
public static long max(long a, long b) {
return (a >= b) ? a : b;
}如果該值小于1分鐘,則按1分鐘算。
最后返回的是三目運算的結果。
到此這篇關于SpringBoot設置Session失效時間的文章就介紹到這了,更多相關SpringBoot設置Session失效時間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot集成ip2region實現(xiàn)ip白名單的代碼示例
ip2region v2.0 - 是一個離線IP地址定位庫和IP定位數(shù)據(jù)管理框架,10微秒級別的查詢效率,提供了眾多主流編程語言的 xdb 數(shù)據(jù)生成和查詢客戶端實現(xiàn),本文介紹了SpringBoot集成ip2region實現(xiàn)ip白名單的代碼工程,需要的朋友可以參考下2024-08-08
IntelliJ IDEA 警告“Immutable object is&nbs
IntelliJ IDEA 作為業(yè)界領先的集成開發(fā)環(huán)境,憑借其強大的靜態(tài)代碼分析引擎,能夠在編譯階段就敏銳地捕捉到此類潛在風險,并彈出 Immutable object is modified警告,下面我們就來看看如何解決吧2026-03-03
java實現(xiàn)上傳圖片尺寸修改和質(zhì)量壓縮
這篇文章主要為大家詳細介紹了java實現(xiàn)上傳圖片尺寸修改和質(zhì)量壓縮,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04
Springboot新建項目Spring Initializr Error問題及解決
這篇文章主要介紹了Springboot新建項目Spring Initializr Error問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11

