我正在使用goa制作一个 Web 服务器(无法为其创建堆栈溢出标签,没有足够的声誉)。
我找不到在控制器方法中获取用户上下文的方法。我使用基本身份验证支持的 JWT 身份验证。我有一个通过 JWT 中间件保护的 JWT 安全操作,它检查密码等。
我想要的是从 JWT 令牌获取用户名到安全方法。有什么办法吗?
goa 设计文件片段:
var JWT = JWTSecurity("jwt", func() {
Header("Authorization")
Scope("api:access", "API access") // Define "api:access" scope
})
Security(JWT, func() {
// Use JWT to auth requests to this endpoint
Scope("api:access") // Enforce presence of "api" scope in JWT claims.
})
Action("secure", func() {
Description("This action is secured with the jwt scheme")
Routing(GET("/jwt"))
Response(OK)
})
这个DSL生成到这个方法中:
func (c *JWTSessionsController) Secure(ctx *app.SecureJWTContext) error {
return ctx.OK(&app.Success{false})
}
生成的操作是安全的并且运行良好(已安装中间件并且所有验证通过)。但我想在操作中获取用户名。有可能吗?
我想以这种方式得到它:
ctx.User.Username
现在我将不得不解析 jwt 两次。:(
我做了一个解析 base64 令牌声明的助手。