1 回答

TA贡献1794条经验 获得超7个赞
使用 传播值。context.Context
如果您使用的是 gqlgen,则必须记住传递给解析器函数的实例来自 (假设您按照 gqlgen 文档中的建议设置了集成)。context.Context*http.Request
因此,使用Go-Gin,您应该能够通过一些额外的管道来做到这一点:
func TokenAuthMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
UID := // ... get the UID somehow
ctx := context.WithValue(c.Request.Context(), "user_id", UID)
c.Request = c.Request.WithContext(ctx)
c.Next()
}
}
然后,您通常会在解析器中获得该值:
func (r *mutationResolver) CreateFarmer(ctx context.Context, input model.NewFarmer) (*model.Farmer, error) {
UID, _ := ctx.Value("user_id").(string)
// ...
}
一个例子(虽然没有杜松子酒)也可以在这里找到
- 1 回答
- 0 关注
- 120 浏览
添加回答
举报