为了账号安全,请及时绑定邮箱和手机立即绑定

Golang REST API - 从经过验证和解码的令牌传递信息

Golang REST API - 从经过验证和解码的令牌传递信息

Go
达令说 2022-10-10 20:01:27
我已经设置了中间件来验证并从 JWT 令牌中提取声明(使用https://github.com/golang-jwt/jwt)。我现在的问题是我想以某种方式将该信息传递给路由处理函数,以便它可以检查存储在令牌中的权限。我很难在这方面找到好的资源,但我看到了两个建议,一个是在验证后使用 REDIS 存储令牌信息,另一个是使用 http.Request 上下文。我宁愿不使用 REDIS,所以我认为它真的只给我留下了 Context?尽管我正在努力寻找关于整个上下文的体面资源,以及此类用例的上下文。另一种选择是让中间件验证令牌,然后在处理程序函数本身内提取 JWT 声明而不再次验证令牌?任何帮助/链接/建议将不胜感激......我知道在 Go 中有很多方法可以给猫剥皮,但我宁愿遵循最佳实践。
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

这是一个很好的教程Contexthttps ://go.dev/blog/context 。之前也有关于上下文和中间件的 SO 讨论,例如How to pass context in golang request to middleware

您可以使用context.WithValue将任意键-> 值映射添加到上下文,然后是请求的WithValue方法:

它可以很简单:

func middleware(rw http.ResponseWriter, req *http.Request, next http.Handler) {
    ctx := context.WithValue(req.Context(), "key", "value")
    next.ServeHTTP(rw, req.WithContext(ctx))}


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信