我不明白为什么我需要(req, res, next)
在passport.authenticate
函数之后
用这个和快递,我跟着一个教程,没有很好地解释这段话
PS:一切正常,我只是不明白为什么需要这样做
const passport = require('passport')
module.exports = (req, res, next) => {
passport.authenticate('jwt', (err, user) => {
if (err || !user || user.isAdmin !== true) {
res.status(403).send({
message: 'Request blocked, only administrators'
})
} else {
req.user = user
next()
}
})(req, res, next)
}
函数调用作为中间件
app.get('/admin', isAdmin, (req, res) => {
res.send({
message: 'You are an admin'
})
})
护照策略配置
passport.use(
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: config.jwtSecret
}, async (jwtPayload, done) => {
try {
const user = await User.findOne({
where: {
id: jwtPayload.id
}
})
if (!user) {
return done(new Error(), false)
}
return done(null, user)
} catch (err) {
return done(new Error(), false)
}
})
)
PSS:我必须为用户身份验证创建另一个名为 isUser.js 的文件,如果我想将它们放在同一个文件中并要求它们,我该怎么办
const Auth = require('./Auth')
Auth.isUser
Auth.isAdmin
我试过了,但我不知道如何使用这种类型的功能:(