【发布时间】:2016-08-30 03:54:00
【问题描述】:
我有很多路线。 他们中的大多数都需要身份验证。 一个没有。
他们在这里:
router.get('/secure1', function (req,res) {...})
router.get('/secure2', function (req,res) {...})
router.get('/secure3', function (req,res) {...})
router.get('/:id', function (req,res) {...})
1. 假设我没有公共路线。
我可以在页面顶部放置一个安全检查中间件,一切都很好。 它只会让安全连接通过,并且会重定向非安全连接。
router.use(function (req,res,next) {
securityCheck()
next()
})
router.get('/secure1', function (req,res) {...})
router.get('/secure2', function (req,res) {...})
router.get('/secure3', function (req,res) {...})
router.get('/:id', function (req,res) {...})
这会奏效。这使得所有安全路由都安全,但它阻止了我使用公共路由('/:id')。
2.我可以将公共路线移到顶部:
router.get('/:id', function (req,res) {...})
router.use(function (req,res,next) {
securityCheck()
next()
})
router.get('/secure1', function (req,res) {...})
router.get('/secure2', function (req,res) {...})
router.get('/secure3', function (req,res) {...})
但这样它会捕获我的所有请求,并且所有安全路径都无法访问。
3.我可以在每条安全路由上放置一个中间件,但这似乎有点乏味并且容易出现人为错误:
router.get('/secure1',securityCheck(), function (req,res) {...})
那么,我没有考虑过更好的选择吗?什么被认为是最佳实践?
谢谢
【问题讨论】: