加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 09:27:52 所属栏目:大数据 来源:网络整理
导读:我正在使用“ github.com/dgrijalva/jwt-go”,并能够向我的前端发送令牌,以及我想知道如何检索从前端发送的令牌,以便我可以验证令牌是否已发送是有效的,如果是,则将传递安全资源. 这是从前端javascript发送的令牌… headers: { 'Authorization':'Bearer' + l
我正在使用“ 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
    }

}

我得到了nil令牌作为回报,我的猜测是我已经发送了持票人,我认为可能需要解析如果是这样的话怎么样?

解决方法

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

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

在Web服务器上,我们需要仅拆分没有Bearer字符串的有效令牌

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

结果它成为有效的令牌而没有nil.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读