鍍金池/ 問答/PHP/ thinkphp使用session保留登陸狀態(tài)持久怎么做

thinkphp使用session保留登陸狀態(tài)持久怎么做

session(array('expire'=>86400*60));

回答
編輯回答
舊城人
和thinkphp無關,提供兩種方案吧:

SESSION的機制:

  1. 客戶端存儲的COOKIE,是會話生命周期,在會話結束(瀏覽器關閉)清除該COOKIE。
  2. 服務端XXX秒沒有該SESSION的新請求的話,在SESSION的GC流程中清除該SESSION。

方案1

場景:記住密碼(1個月)

在登錄勾選后,在客戶端存儲用戶數(shù)據COOKIE,過期時間和設置記住的時間一直,通過可逆算法生成加密后的用戶數(shù)據:{uid:1},為了安全性,可以通過再添加一個驗證COOKIE用來判斷數(shù)據是否被篡改,該驗證COOKIE,通過不可逆算法(例如md5+salt)將原始數(shù)據加密。

后臺首先檢測登錄狀態(tài),未登錄的話,獲取用戶數(shù)據COOKIE和驗證COOKIE,如果驗證通過,生成對應的SESSION數(shù)據。

方案2

場景:針對后臺需要一直保持狀態(tài)的,防止單據頁面提交過程中因為操作過久,導致SESSION被GC回收,需要重新登陸。

可以在前端寫一個定時器,每X分鐘發(fā)送一個類似心跳包的請求,防止SESSION因為太久未請求被GC回收。

當然這僅是我知道的兩種方案,肯定還是有更多好的方案。

2017年5月9日 11:26