I am making a web server with goa.
I cannot find a way to get user context inside a controller method. I use JWT auth that is supported by basic auth. I have a JWT secure action that is secured via JWT middleware and it checks passwords and so on.
What I want is to get the username from JWT token to the secure method. Is there any way?
goa design file fragment:
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)
})
and this DSL gets generated into this method:
func (c *JWTSessionsController) Secure(ctx *app.SecureJWTContext) error {
return ctx.OK(&app.Success{false})
}
The generated action is secured and works well (Middleware is mounted and all validation passes). But I want to get username inside in the action. Is is somehow possible?
I would like to get it in this way:
ctx.User.Username
For now I will have to parse the jwt twice.
Stack overflow link (no new information there): link
I made a helper that parses base64 token claims.