미들웨어에서 핸들러로 데이터 전달
설계에는 들어오는 요청을 처리하는 미들웨어와 http.Handler를 반환하는 핸들러가 있습니다. . 미들웨어의 데이터, 특히 요청 본문에서 구문 분석된 JSON 웹 토큰을 핸들러로 전달하려고 합니다.
이를 달성하려면 Gorilla의 컨텍스트 패키지를 활용할 수 있습니다.
import ( "github.com/gorilla/context" ) func Middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Middleware operations // Parse body/get token. context.Set(r, "token", token) next.ServeHTTP(w, r) }) } func Handler() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { token := context.Get(r, "token") }) }
미들웨어에서는 요청 본문을 구문 분석하고 JWT를 요청 컨텍스트에 저장합니다. 그런 다음 핸들러에서 컨텍스트에서 JWT를 검색할 수 있습니다.
token := context.Get(r, "token")
이를 통해 JWT를 다시 구문 분석하는 것을 방지할 수 있습니다. 더 효율적입니다.
업데이트:
Gorilla 컨텍스트 패키지는 현재 유지 관리 모드에 있습니다.
func Middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Middleware operations // Parse body/get token. ctx := context.WithValue(r.Context(), "token", token) next.ServeHTTP(w, r.WithContext(ctx)) }) } func Handler() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { token := r.Context().Value("token") }) }
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3