简介
在 Web 服务器中实现身份验证机制对于保护用户数据和安全至关重要控制对受保护资源的访问。当使用 httprouter 包进行路由并使用 Negroni 进行中间件管理时,您可能会遇到需要从身份验证中排除特定路由的情况。本文探讨了如何在 Negroni 中实现特定于路由的中间件。
问题陈述
给定一个使用 httprouter 和 Negroni 的服务器设置,目标是实现一个身份验证处理程序(authenticator.Get()) 并将其应用于除一个路由之外的所有路由(例如“/login”)。
解决方案
针对 Negroni 的特定于路由的中间件,我们需要为每条路线创建单独的 Negroni 实例。在提供的示例中,为“/login”和“/”创建单独的 Negroni 实例。仅使用 loginHandler 将“/login”路由排除在身份验证之外,而“/”路由同时使用authenticator.Get() 和indexHandler。
实现
<code class="go">router := httprouter.New() router.Handler("GET", "/login", negroni.New(negroni.HandlerFunc(loginHandler))) router.Handler("GET", "/", negroni.New(authenticator.Get(), negroni.HandlerFunc(indexHandler))) server := negroni.Classic() server.UseHandler(router) server.Use(sessions.Sessions("example-web-dev", cookiestore.New([]byte("some secret")))) server.Run(":3000")</code>
要点
以上是如何在 Negroni 中实现特定于路由的中间件?的详细内容。更多信息请关注PHP中文网其他相关文章!