Mak*_*aus 7 jwt swagger openapi go-swagger
我在使用BearerAuthJWT令牌时使用了sw-swagger .连同实际令牌,我收到的声明包括用户名等数据.
如何在api.ItemsCreateItemHandler下面的功能中访问声明?
package restapi
func configureAPI(api *operations.MyAPI) http.Handler {
api.BearerAuth = func(token string) (interface{}, error) {
jwtToken := strings.Replace(token, "Bearer ", "", -1)
// skipped token verification
claims, _ := parsedToken.Claims.(jwt.MapClaims)
}
api.ItemsCreateItemHandler = items.CreateItemHandlerFunc(func(params items.CreateItemParams, principal interface{}) middleware.Responder {
// FIXME: Here I need to be able to access JWT claims
if err := createItem(params.Body, claims); err != nil {
return nil // handle error
}
return items.NewCreateItemCreated()
})
}
Run Code Online (Sandbox Code Playgroud)
Hen*_*ikM -1
JWT 由 3 部分组成,按标点符号分隔 - 令牌本身是 Base64 编码的。
例如,这是来自https://jwt.io/的令牌
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQs SW5C
您需要拆分和解码,您需要的是包含纯 JSON 有效负载的第二部分。
所以在伪代码中它看起来像这样;
json = Base64Decode(split(".", yourData)[1])
Run Code Online (Sandbox Code Playgroud)
您将在https://jwt.io/看到更具体的示例
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |