登录
首页 >  Golang >  Go问答

实现 Fiber.context 自定义中间件中的声明的方法是什么?

来源:stackoverflow

时间:2024-03-14 23:27:28 269浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《实现 Fiber.context 自定义中间件中的声明的方法是什么?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我想设置对 fiber.context 的声明。但我在第 3 行收到一个错误,即 *jwt.token 为空。我怎样才能获得令牌或声明?或者您有使用其他任何东西的建议吗?

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)


正确答案


您在 gocarbon 食谱存储库中拥有完整的 jwt exmaple 实现。

链接:https://github.com/gofiber/recipes/tree/master/jwt

简而言之。

product := api.Group("/product")
product.Get("/", handler.GetAllProducts)
product.Get("/:id", handler.GetProduct)
product.Post("/", middleware.Protected(), handler.CreateProduct)
product.Delete("/:id", middleware.Protected(), handler.DeleteProduct)
  • 确保您在每个受保护的路由上使用过滤器时与示例中完全相同:

正确使用 middleware.protected(),因此 jwt 令牌应该在您的处理程序 ctx.locals 中可用

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>