我正在使用“ github.com/dgrijalva/jwt- go”,并且能够向我的前端发送令牌,以及我想知道如何检索从前端发送的令牌,以便可以验证令牌是否正确发送的邮件是有效的,如果是,则将交付安全资源。
这是从前端JavaScript发送的令牌…
headers: { 'Authorization':'Bearer' + localStorage.getItem('id_token') }
这是发送令牌的代码
token := jwt.New(jwt.GetSigningMethod("HS256")) claims := make(jwt.MapClaims) claims["userName"] = loginRequest.UserName claims["exp"] = time.Now().Add(time.Minute * 60).Unix() token.Claims = claims tokenString, err := token.SignedString([]byte(SecretKey)) tokenByte, err := json.Marshal(data) w.WriteHeader(201) w.Write(tokenByte)
这是验证令牌的代码
func VerifyToken(r *http.Request) bool { reqToken := r.Header.Get("Authorization") token, err := jwt.Parse(reqToken, func(t *jwt.Token) (interface{}, error) { return []byte(SecretKey), nil }) if err == nil && token.Valid { fmt.Println("valid token") return true } else { fmt.Println("invalid token") return false } }
正在获得 零 令牌作为回报,我猜是我已经发送了不记名凭证,我认为可能需要解析,怎么办?
服务器需要令牌字符串而没有添加字符串,在我的情况下,我在向Web服务器发送请求时已将Bearer字符串添加到标头中的令牌字符串中,即
'Authorization':'Bearer ' + localStorage.getItem('id_token')
在Web服务器上,我们只需要拆分有效令牌,而无需Bearer字符串
reqToken := r.Header.Get("Authorization") splitToken := strings.Split(reqToken, "Bearer ") reqToken = splitToken[1]
结果,它成为没有nil的有效令牌。