我有一个使用 httprouter 和 negroni 的网络服务器。用户通过外部 OAuth 登录此系统。我们将令牌保存到表明他们是否登录的加密会话中。我想使用中间件来验证此令牌是否存在,如果不存在,则将用户踢回登录页面。我想从使用身份验证中间件中排除一些路由。negroni README 中有一个使用 gorilla mux 执行此操作的示例,但我无法完全理解使用 httprouter 可扩展地执行此操作。类似于我的服务器设置的内容如下:
router := httprouter.New()
router.GET("/login", Login) // auth not required
router.GET("/", Index) // auth required
s := 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许多其他门控路线。
蝴蝶不菲
相关分类