token的三点注意项
生活随笔
收集整理的這篇文章主要介紹了
token的三点注意项
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
token的安全是極度重要的
1:token的唯一性,
它代表著來自某應用系統(tǒng)用戶的一次成功登錄。我們可以利用java util包工具直接生成一個32位唯一字符串來實現(xiàn)。
String token = UUID.randomUUID().toString();同時,我們定義一個javabean, TokenInfo 來承載token所表示的具體內(nèi)容,即某個應用系統(tǒng)來的某個用戶本次通過了認證中心
public class TokenInfo { private int userId; //用戶唯一標識ID private String username; //用戶登錄名 private String ssoClient; //來自登錄請求的某應用系統(tǒng)標識 private String globalId; //本次登錄成功的全局會話sessionId ... }token和tokenInfo形成了一個<key,value>形式的鍵值對,后續(xù)應用系統(tǒng)向認證中心驗證token時還會用到。
2:
token存在的有效期間不能過長,這是出于安全的角度,例如token生存最大時長為60秒。
我們可以直接利用redis特性來實現(xiàn)這一功能。redis本質(zhì)就是<key,value>鍵值對形式的內(nèi)存數(shù)據(jù)庫,并且這個鍵值對可以設置有效時長。
3
token只能使用一次,用完即作廢,不能重復使用。這也是保證系統(tǒng)安全性。
我們可以定義一個TokenUtil工具類,來實現(xiàn)<token,tokenInfo>鍵值對在redis中的操作,主要接口如下:
public class TokenUtil { ... // 存儲臨時令牌到redis中,存活期60秒 public static void setToken(String tokenId, TokenInfo tokenInfo){ ... } //根據(jù)token鍵取TokenInfo public static TokenInfo getToken(String tokenId){ ... } //刪除某個 token鍵值 public static void delToken(String tokenId){ ... } }?
轉(zhuǎn)載于:https://www.cnblogs.com/siyan/p/8421145.html
總結(jié)
以上是生活随笔為你收集整理的token的三点注意项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL查询不到中文的问题
- 下一篇: iOS开发--UITableView