为了账号安全,请及时绑定邮箱和手机立即绑定

带有 Negroni 的特定于路由的中间件

带有 Negroni 的特定于路由的中间件

Go
慕莱坞森 2021-09-13 16:10:32
我有一个使用 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 的一个实例


查看完整回答
反对 回复 2021-09-13
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信