当前位置: 首页 > 面试题库 >

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

张英范
2023-03-14
问题内容

我正在使用“ 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的有效令牌。



 类似资料:
  • 我有带有azure ad b2c的前端(https://github.com/Azure-Samples/ms-identity-b2c-javascript-spa)。用户登录后,azure AD返回SPA令牌。我使用此访问令牌调用springbooapi。 我的springboot应用程序如何验证acess令牌并使用此令牌从azure ad b2c获取用户信息。 谢谢

  • 您好,我正在尝试使用React、Express和Firebase创建一个具有身份验证的项目。在创建身份验证的过程中,我不知道为什么这种发送身份验证令牌的方式对我不起作用

  • 问题内容: 我需要验证一个Google id_token,其中一个步骤涉及检查令牌签名。 首先,我从以下网址获取证书:https : //www.googleapis.com/oauth2/v2/certs,并从证书中提取模数(n)和指数(e)并生成公钥,然后分解令牌(标题,有效负载和摘要),然后将解码后的内容与Google pKey +摘要一起发送到rsa函数。 我陷入了这个验证错误: 这是代码

  • 到目前为止,我只处理了服务器呈现的应用程序,在用户通过用户名/密码或使用OAuth提供商(Facebook等)登录后,服务器只是设置一个会话cookie,同时重定向到相关页面。 然而,现在我正在尝试使用更“现代”的方法构建一个应用程序,前端是React,后端是JSON API。显然,这方面的标准选择是使用JSON web令牌进行身份验证,但我很难弄清楚我应该如何将JWT提供给客户机,以便将其存储在

  • 问题内容: 如何验证从Amazon Cognito收到的JWT并从中获取信息? 我已经在Cognito中设置了Google身份验证,并将重定向uri设置为打API Gateway,然后收到了我发布到此端点的代码: https://docs.aws.amazon.com/cognito/latest/developerguide/token- endpoint.html 要接收JWT令牌,采用RS2

  • null 问题是,我想我不理解这些HTTP触发器是如何进行身份验证的。我显然只希望通过身份验证的用户对这些endpoint进行呼叫,而我的用户要么是iOS用户,要么是Android用户。 我已经发现了:我遵循了这个链接中的代码示例:https://github.com/firebase/functions-samples/blob/master/authorized-https-endpoint/