使用 Negroni 的特定于路由的中间件:可扩展的方法
在使用 Negroni 和 httprouter 进行 Web 开发时,需要有选择地将中间件应用到各种路线经常出现。为了实现这一目标,有必要了解特定于路由的中间件的概念。
处理多个路由时,对特定路由应用身份验证检查,同时排除其他路由会带来挑战。当使用 Negroni(一个强大的请求处理框架)时尤其如此。在这种情况下,我们将探索一种可扩展的方法,选择性地将中间件应用于路由。
实现特定于路由的中间件
为了使用 Negroni 实现特定于路由的中间件,我们可以利用创建多个 Negroni 实例的能力。在提供的示例中,我们在authenticator.Get()中有身份验证中间件,我们只想将其应用于“/”路由。
<code class="go">router := httprouter.New()</code>
<code class="go">loginHandler := negroni.New(negroni.HandlerFunc(loginHandler)) indexHandler := negroni.New(authenticator.Get(), negroni.HandlerFunc(indexHandler))</code>
<code class="go">router.Handler("GET", "/login", loginHandler) router.Handler("GET", "/", indexHandler)</code>
<code class="go">server := negroni.Classic() server.UseHandler(router) server.Use(sessions.Sessions("example-web-dev", cookiestore.New([]byte("some secret"))))</code>
通过这种方法,我们有效地将身份验证中间件仅应用于“/”路由。要实现多个公共和私有路由的可扩展性,只需创建单独的 Negroni 实例并将它们相应地添加到路由器即可。
以上是如何使用 Negroni 实现可扩展的特定于路由的中间件?的详细内容。更多信息请关注PHP中文网其他相关文章!