【发布时间】:2018-09-06 03:26:05
【问题描述】:
在我的 Node/Express API 中,为了保护我的路线,我是 passport.authenticate
app.get('/', passport.authenticate('jwt', { session: false}), (req, res) => { //whatever })
我在这些路由上有额外的中间件,它变得相当长,我不想要求护照进入我的所有路由器文件,所以在一个单独的文件中,我在一个名为protect的现有身份验证对象上创建了另一个方法
const auth = {
protect() {}
}
这让我可以这样做
app.get('/', auth.protect, (req, res) => { //whatever })
最初我尝试返回 passport.authenticate 行
const auth = {
protect() {
return passport.authenticate('jwt', { session: false})
}
}
但这不起作用
然后我将它包裹在箭头函数中
const auth = {
protect() {
() => passport.authenticate('jwt', { session: false})
}
}
现在,当我在路线上调用 auth.protect 时,它工作得很好。
另外,如果我只是导出一个箭头函数
export const protect = () => {
return passport.authenticate('jwt', { session: false})
}
当我在路线上调用 protect 时,这也有效。
为什么我需要用我想运行的代码返回一个箭头函数,为什么当我在我的路由上调用函数时第一个返回的例子不起作用?
【问题讨论】:
标签: javascript node.js function express middleware