1. 程式人生 > 程式設計 >golang jwt+token驗證的實現

golang jwt+token驗證的實現

Token驗證是驗證使用者身份的重要方式,在golang開發中具有廣泛應用,文中主要闡述了利用jwt包加密後的token驗證。

匯入包:

import (
  "github.com/dgrijalva/jwt-go"
)
// GenerateToken 生成Token
func GenerateToken(mapClaims jwt.MapClaims,key string) (string,error) {
  token := jwt.NewWithClaims(jwt.SigningMethodHS256,mapClaims)
  return token.SignedString([]byte(key))
}
// 驗證token
func checkToken(uid int64,token *jwt.Token) bool {
  tokens,_ := token.SignedString([]byte(JWTKey))
  redisToken,_ := GetMemberToken(uid)
  if tokens != redisToken {
   return false
  }
  return true
}

使用者登入請求取出token

token,err := request.ParseFromRequest(r,request.AuthorizationHeaderExtractor,func(token *jwt.Token) (interface{},error) {
  return []byte(JWTKey),nil
})
if err == nil && token.Valid {
  tokenMap := token.Claims.(jwt.MapClaims)
  uidStr := tokenMap["uid"].(string)
  uid,_ := strconv.ParseInt(uidStr,10,64)

  if !checkToken(uid,token) {
   // 驗證token 是否合法
   base.ErrorResponse(w,http.StatusUnauthorized,"Authorization Is Invalid")
   return
  }
}

token主要是生成,驗證,以及使用者請求時解析token得出使用者uid和token的有效性

到此這篇關於golang jwt+token驗證的實現的文章就介紹到這了,更多相關golang jwt+token驗證內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!