go中输入字节0的非法base64数据

时间:2016-08-13 12:37:17

标签: go jwt

我从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数据 我真的很困惑为什么会这样。

1 个答案:

答案 0 :(得分:2)

请勿在令牌周围使用curlies。许多地方的文档令人困惑,因为它将你的令牌包裹在curlies中。它意味着代表一个占位符。你实际上不应该用它们包装你的令牌。不要这样做。

Bearer {my-special-token}

应该这样做

Bearer my-special-token