我有一个使用 httprouter 和 negroni 的网络服务器。用户通过外部 OAuth 登录此系统。我们将令牌保存到表明他们是否登录的加密会话中。我想使用中间件来验证此令牌是否存在,如果不存在,则将用户踢回登录页面。我想从使用身份验证中间件中排除一些路由。negroni README 中有一个使用 gorilla mux 执行此操作的示例,但我无法完全理解使用 httprouter 可扩展地执行此操作。类似于我的服务器设置的内容如下:router := httprouter.New()router.GET("/login", Login) // auth not requiredrouter.GET("/", Index) // auth requireds := negroni.Classic()s.Use(sessions.Sessions("example-web-dev", cookiestore.New([]byte("some garbage"))))s.Use(authenticator.Get())s.UseHandler(router)/login我不想通过中间件授权的路线在哪里,/是。authenticator.Get()是我的身份验证处理程序函数,其中包含我认为与问题无关的内容。我怎样才能申请authenticator.Get()到/,但不是/login?请记住,旁边还会有其他几条“公共”路线以及/login许多其他门控路线。
2 回答
蝴蝶不菲
TA贡献1810条经验 获得超4个赞
如果使用 httprouter,则可以通过调用 router.Lookup 函数来检索参数。这是我所做的:
_, params, _ := router.Lookup("GET", req.URL.Path) 其中 router 是 httprouter.Router 的一个实例
- 2 回答
- 0 关注
- 161 浏览
添加回答
举报
0/150
提交
取消