小编典典

如何在Golang中提取和验证从前端发送的令牌

go

我正在使用“ 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
    }

}

正在获得 令牌作为回报,我猜是我已经发送了不记名凭证,我认为可能需要解析,怎么办?


阅读 276

收藏
2020-07-02

共1个答案

小编典典

服务器需要令牌字符串而没有添加字符串,在我的情况下,我在向Web服务器发送请求时已将Bearer字符串添加到标头中的令牌字符串中,即

'Authorization':'Bearer ' + localStorage.getItem('id_token')

在Web服务器上,我们只需要拆分有效令牌,而无需Bearer字符串

reqToken := r.Header.Get("Authorization")
splitToken := strings.Split(reqToken, "Bearer ")
reqToken = splitToken[1]

结果,它成为没有nil的有效令牌。

2020-07-02