2021-05-12 14:32:11
golang jwt+token驗證的實現
2020-10-21 15:01:14
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驗證內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章