權限認證框架sa-token的token有效期與實時續簽

sa-token

sa-token 是一個很是強大的JavaWeb權限認證框架,其集成了諸多好用的特性,諸如:登陸驗證、權限驗證、自定義session會話、踢人下線 等等都可以在框架中一行代碼完成調用,官網地址:http://sa-token.dev33.cn/java

sa-token的令牌有效期

sa-token 提供兩種token自動過時策略,分別是timeoutactivity-timeout,其詳細用法以下:程序員

timeout

  • timeout表明token的長久有效期,單位/秒,例如將其配置爲2592000(30天),表明在30天后,token一定過時,沒法繼續使用
  • timeout沒法續簽,想要繼續使用必須從新登陸
  • timeout的值配置爲-1後,表明永久有效,不會過時

activity-timeout

  • activity-timeout表明臨時有效期,單位/秒,例如將其配置爲1800(30分鐘),表明用戶若是30分鐘無操做,則此token會當即過時
  • 若是在30分鐘內用戶有操做,則會再次續簽30分鐘,用戶若是一直操做則會一直續簽,直到連續30分鐘無操做,token纔會過時
  • activity-timeout的值配置爲-1後,表明永久有效,不會過時,此時也無需頻繁續簽

關於activity-timeout的續簽

若是activity-timeout配置了大於零的值,sa-token會在登陸時開始計時,在每次直接或間接調用getLoginId()時進行一次過時檢查與續簽操做。 此時會有兩種狀況:算法

  • 一種是會話無操做時間太長,token已通過期,此時框架會拋出NotLoginException異常(場景值=-3),
  • 另外一種則是會話在activity-timeout有效期內經過檢查,此時token能夠成功續簽 

我能夠手動續簽嗎?

能夠! 若是框架的自動續簽算法沒法知足您的業務需求,你能夠進行手動續簽,sa-token提供兩個API供你操做:session

  • StpUtil.checkActivityTimeout(): 檢查當前token 是否已經[臨時過時],若是已通過期則拋出異常
  • StpUtil.updateLastActivityToNow(): 續簽當前token:(將 [最後操做時間] 更新爲當前時間戳) 
  • 注意:在手動續簽時,即時token已經 [臨時過時] 也可續簽成功,若是此場景下須要提示續簽失敗,可採用先檢查再續簽的形式保證token有效性 
  • 例如如下代碼:
    // 先檢查是否已過時
    StpUtil.checkActivityTimeout();
    // 檢查經過後繼續續簽
    StpUtil.updateLastActivityToNow();

timeout與activity-timeout能夠同時使用嗎?

能夠同時使用! 二者的認證邏輯彼此獨立,互不干擾,能夠同時使用。框架

<br/><br/><br/><br/> 程序員交流qq羣:782974737 點擊加入url

相關文章
相關標籤/搜索