我从go和jwt开始。
出于测试目的,我有一个硬编码的秘密。 以及获取密钥的途径
* {
margin: 0;
padding: 0;
}
#container {
width: 100%;
height: 704px;
overflow: hidden;
background: white;
opacity: 0.7;
z-index:100;
position: relative;
}
#topnav {
width: 100px;
height: 20px;
background-color: red;
z-index:1000;
position: relative;
color: red;
}
后来将jwtMiddleware添加到我的路线
const secretKey = "YOLOSWAG"
var mySigningKey = []byte(secretKey)
var GetTokenHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
token := jwt.New(jwt.SigningMethodHS256)
token.Claims = jwt.MapClaims{
"admin": true,
"name": "John Doe",
"exp": time.Now().Add(time.Hour * 24).Unix(),
}
tokenString, _ := token.SignedString(mySigningKey)
w.Write([]byte(tokenString))
})
var jwtMiddleware = jwtmiddleware.New(jwtmiddleware.Options{
ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) {
return mySigningKey, nil
},
SigningMethod: jwt.SigningMethodHS256,
})
因此localhost:3000 / protected将输出错误未找到所需的授权令牌
这有效。
/ token将输出我的令牌。这也有效。
最后/受保护(邮递员)授权:Bearer {token}
将在输入字节0输出非法的base64数据 我真的很困惑为什么会这样。
答案 0 :(得分:2)
请勿在令牌周围使用curlies。许多地方的文档令人困惑,因为它将你的令牌包裹在curlies中。它意味着代表一个占位符。你实际上不应该用它们包装你的令牌。不要这样做。
Bearer {my-special-token}
应该这样做
Bearer my-special-token