我想设置对fiber.context的声明。但是我在第三行得到了一个错误,即*jwt。令牌为空。我如何才能到达令牌或声明?或者您是否有使用其他任何内容的建议?
func RoleMiddleware() func(*fiber.Ctx) { //change name
return func(ctx *fiber.Ctx) {
user := ctx.Locals("user").(*jwt.Token)
claims := user.Claims.(jwt.MapClaims)
ctx.Locals("id", int(claims["id"].(float64)))
ctx.Locals("is_api", claims["is_api"])
ctx.Locals("is_admin", claims["is_admin"])
ctx.Locals("is_super_admin", claims["is_super_admin"])
}
}
我将在我的user_controller中使用此示例:user_id := ctx.Locals("id").(int)
1条答案
按热度按时间w46czmvw1#
您在gofiber recipes repo中有一个完整的JWT示例实现。
链接:https://github.com/gofiber/recipes/tree/master/jwt
简而言之。
正确使用
middleware.Protected()
,因此JWT标记应该在处理程序ctx.Locals
中可用