【发布时间】:2017-05-15 21:33:41
【问题描述】:
我正在使用 gorilla mux 进行请求路由。
我编写了一个基本的中间件,我想将 user 变量添加到上下文中,以便在处理程序中访问。但是我找不到如何在中间件中获取路由参数:
router := mux.NewRouter().StrictSlash(true)
router.HandleFunc("/{username}/accounts", AccountListHandler)
log.Fatal(http.ListenAndServe(":8080", AuthMiddleware(router)))
中间件代码:
func AuthMiddleware(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// params := mux.Vars(r)
// fmt.Printf("%v", params["username"])
user := User{Username: "myUsername"}
ctx := context.WithValue(r.Context(), "user", user)
h.ServeHTTP(w, r.WithContext(ctx))
})
}
我想在中间件中访问username 参数。我该怎么做?
【问题讨论】: