1 回答

TA貢獻1794條經驗 獲得超8個贊
使用 傳播值。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 關注
- 150 瀏覽
添加回答
舉報