golang jwt+token驗證

 Token驗證是驗證用戶身份的重要方式,在golang開發中具備普遍應用,文中主要闡述了利用jwt包加密後的token驗證。git

導入包:github

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的有效性
相關文章
相關標籤/搜索