新聞中心
Redis作為一種定義為高級key-value緩存,在存取時間短的情況下搭建的NoSQL,是存儲持久化的信息的最佳選擇,有著高可用性、快速響應(yīng)時間等特點。而JSON Web token(JWT)是用于在客戶端和服務(wù)器之間傳輸信息的應(yīng)用程序的標(biāo)準(zhǔn),由于其核心的幾大特性(獨立性,無狀態(tài)性,易擴展性,安全性),JWT在Web開發(fā)和RESTful架構(gòu)中越發(fā)普及。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名與空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、西工網(wǎng)站維護、網(wǎng)站推廣。
基于Redis集群來實現(xiàn)JWT具有一定的突出優(yōu)勢,一方面Redis可以實現(xiàn)極高的性能和提供高可用性,并且Redis集群可以實現(xiàn)check-out token,從而避免令牌因概率超時而被刪除;另一方面,Redis集群提供了原子性,能夠保證多線程訪問和有序性,從而避免出現(xiàn)數(shù)據(jù)庫存儲token出現(xiàn)交叉添加等問題,而且Redis的存儲方式也極大的減少了數(shù)據(jù)庫的負(fù)載存儲壓力。
實現(xiàn)JWT基于Redis集群一般采用labstack/echo框架,下面是針對echo框架實現(xiàn)JWT基于Redis集群的代碼實現(xiàn):
// 注冊JWT中間件
e := echo.New()
config := jwt.JWTConfig{
SigningKey: “justforTesting”, //secret秘鑰
SigningMethod: “HS256”, //jwt簽名方法
Done: doneFunc,
}
e.Use(jwt.JWTWithConfig(config))
// 將token緩存到Redis集群
redisConn,ERR := redis.NewClusterClient(&redis.ClusterOptions{
Addrs: []string{“host:7777″,”host2:7777”},
Password “password”,
})
// 添加token實現(xiàn)
func doneFunc (clms jwt.Clms) error {
token, err := jwt.GenerateToken(clms)
if err != nil {
return err
}
jwt.StoreToken(token, clms, redisConn) // stores the token in redis
return nil
}
// 驗證token
func validateFunc (token string) (jwt.Clms, error) {
clms, err := jwt.ParseToken(token, redisConn)
if err != nil {
return jwt.Clms{}, err
}
return clms, nil
}
上述就是基于Redis集群實現(xiàn)JWT的過程,使用Redis集群可以極大加快token驗證的處理速度,而且具有較高的可用性,可以在多伺服端機器上保證token處理的連續(xù)性。
成都網(wǎng)站設(shè)計制作選創(chuàng)新互聯(lián),專業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專注成都高端網(wǎng)站建設(shè)定制開發(fā)服務(wù),為客戶提供專業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁設(shè)計,成都網(wǎng)站設(shè)計服務(wù);成都創(chuàng)新互聯(lián)服務(wù)內(nèi)容包含成都網(wǎng)站建設(shè),小程序開發(fā),營銷網(wǎng)站建設(shè),網(wǎng)站改版,服務(wù)器托管租用等互聯(lián)網(wǎng)服務(wù)。
新聞名稱:基于Redis集群的JWT實現(xiàn)方案(redis集群jwt)
分享網(wǎng)址:http://www.fisionsoft.com.cn/article/ccdchog.html


咨詢
建站咨詢
