我正在使用"github.com/dgrijalva/jwt-go",并能够向我的前端发送令牌,以及我想知道如何检索从前端发送的令牌,以便我可以验证令牌是否已发送是有效的,如果是,则将传递安全资源.
这是从前端javascript发送的令牌...
headers: {
'Authorization':'Bearer' + localStorage.getItem('id_token')
}
Run Code Online (Sandbox Code Playgroud)
这是发送令牌的代码
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)
Run Code Online (Sandbox Code Playgroud)
以下是验证令牌的代码
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
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了nil令牌作为回报,我的猜测是我已经发送了持票人,我认为可能需要解析如果是这样的话怎么样?
poi*_*ise 14
在我的情况下,服务器需要一个没有添加字符串的令牌字符串我在向Web服务器发送请求时已将Bearer字符串添加到标头中的令牌字符串,即
'Authorization':'Bearer' + localStorage.getItem('id_token')
Run Code Online (Sandbox Code Playgroud)
在Web服务器上,我们需要仅拆分没有Bearer字符串的有效令牌
reqToken := r.Header.Get("Authorization")
splitToken := strings.Split(reqToken, "Bearer")
reqToken = splitToken[1]
Run Code Online (Sandbox Code Playgroud)
结果它成为有效的令牌而没有nil.
上面的答案有点不正确,因为在分割之后reqToken,中应该只有一个值splitToken,即令牌本身。
假设令牌具有以下格式:
'Authorization': 'Bearer <YOUR_TOKEN_HERE>'
Run Code Online (Sandbox Code Playgroud)
这是标准格式-字符串“ Bearer”与实际令牌本身之间有一个空格。
以下代码将执行正确的令牌提取:
reqToken := r.Header.Get("Authorization")
splitToken := strings.Split(reqToken, "Bearer")
if len(splitToken) != 2 {
// Error: Bearer token not in proper format
}
reqToken = strings.TrimSpace(splitToken[1])
fmt.Println(reqToken) // <YOUR_TOKEN_HERE>
Run Code Online (Sandbox Code Playgroud)
信用: https: //github.com/harlow/authtoken/blob/master/authtoken.go
const BEARER_SCHEMA = "Bearer "
authHeader := req.Header.Get("Authorization")
token := authHeader[len(BEARER_SCHEMA):]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8623 次 |
| 最近记录: |