談談JWT鑑權的應用場景及使用建議?

2021-10-03 12:01:57 字數 956 閱讀 2804

1.jwt和security的對比:

jwt的優點:

jwt的缺點:

springsecurity:

優點:缺點:2.你們使用jwt做登入憑證,如何解決token登出問題

答:jwt的缺陷是token生成後無法修改,因此無法讓token失效。只能採用其它方案來彌補,基本思路如下:

方案一:

1)適當減短token有效期,讓token盡快失效

2)刪除客戶端cookie

3)服務端對失效token進行標記,形成黑名單,雖然有違無狀態特性,但是因為token有效期短,因此標記 時間也比較短。伺服器壓力會比較小

方案二:

1)使用者登入後,生成jwt

2)把jwt的id存入redis,只有redis中有id的jwt,才是有效的jwt

3)退出登入時,把id從redis刪除即可

3.既然token有效期短,怎麼解決token失效後的續簽問題?

答:在驗證使用者登入狀態的**中,新增一段邏輯:判斷cookie即將到期時,重新生成乙個token。比如token有效期為30分鐘,當使用者請求我們時,我們可以判斷如果使用者的token有效期還剩下10分鐘,那麼就重新生成token。因此使用者只要在操作我們的**,就會續簽token

4.如何解決異地登入問題?

答:jwt設計為了實現無狀態的登入,因此token無法修改,難以實現異地登入的判斷,或者強制讓登入token失效。

因此如果有類似需求, 就不應選擇jwt作為登入方案,而是使用傳統session登入方案。

但是,如果一定要用jwt實現類似要過,就需要在redis中記錄登入使用者的jwt的token資訊,這樣就成了有狀態的登入,還不如一開始就選擇session方案。

5.如何解決cookie被盜用問題?

答:cookie被盜用的可能性主要包括下面幾種:

髮夾模式的使用及應用場景

因為裝置傳輸不對稱導致交換模式下出現雙收等現象,所以近期研究了一下髮夾模式,由場景說說髮夾模式的使用。起因 工作在二層模式的整套裝置,為了防止雙收使用髮夾模式處理業務。網路拓撲 說明 如圖所設,如果終端b2向終端b1發出一條報文,當不使用髮夾模式時,在終端b1會收到兩份相同的資料。兩份資料 乙份 於...

mysql中sql使用場景及應用技巧

今天主要總結一下工作中遇到的極為重要的語句,後續會持續更新 1 資料很重要,所以做刪除更新操作時就需要特別謹慎。謹防出錯的有效避免辦法就是做此類操作時要備份資料。下面語句是mysql中備份表的語句 create table 目標表名稱 as select from 源表 2 資料庫完全清空表語句 t...

互斥鎖(使用過程及應用場景)

pthread mutex t 互斥鎖變數的型別 例 pthread mutex t mutex int pthread mutex init pthread mutex t mutex,const pthread mutexattr t attr attr 互斥鎖屬性,一般情況下,我們都不需要關心...