Moh*_*yeb 2 javascript node.js express passport.js
我正在开发一个带有nodejs v8.7.0的后端,用于使用护照和本地护照进行身份验证,我之前使用过这一切,一切顺利,但现在我不知道是什么问题,这是我的代码:
我的策略:
var passport = require('passport')
var LocalStrategy = require('passport-local').Strategy
passport.use('local', new LocalStrategy({
usernameField: 'email'
},
function (email, password, done) {
User.findOne({
email: email,
is_admin: false
}, function (err, user) {
if (err) {
return done(err)
}
// Return if user not found in database
if (!user) {
return done(null, false, {
message: 'User not found'
})
}
// Return if password is wrong
if (!user.validPassword(password)) {
return done(null, false, {
message: 'Password is wrong'
})
}
// If credentials are correct, return the user object
return done(null, user)
})
}
))Run Code Online (Sandbox Code Playgroud)
这是电话发生的地方:
router.post('/login', (req, res) => {
try {
passport.authenticate('local', function (err, user, info) {
console.log('here xx')
var token;
if (err) {
console.log(err);
return res.status(401).json(err);
}
// If a user is found
if (user) {
console.log('here')
token = user.generateJwt();
return res.status(200).json({
"token": token
});
} else {
// If user is not found
res.status(401).json(info);
}
})
} catch (reason) {
res.status(501).json({
message: reason.message
})
}
})Run Code Online (Sandbox Code Playgroud)
问题是我什么都没有像来自console.log的消息或任何类似错误的消息,它没有执行来自passport.authenticate的回调....顺便说一句,如注册新用户和一切都很好,任何人都可以帮忙吗?
护照应该用作middleware.在您的路线中使用它:
router.post('/login', passport.authenticate('local'), (req, res) => { })
在您的路线内,您将有权访问 req.user
如果您不使用中间件,则可以使用回调.但你需要传入req,res并且next.
例如:
passport.authenticate('local', function (err, user, info) {
})(req, res, next)
Run Code Online (Sandbox Code Playgroud)
这是一个完整的示例,请注意,这不是使用中间件,因为在这种情况下,您要定义自定义消息并需要使用回调来获取信息.
router.post('/login', (req, res) => {
passport.authenticate('local', function (err, user, info) {
if (err) {
return res.status(401).json(err);
}
if (user) {
const token = user.generateJwt();
return res.status(200).json({
"token": token
});
} else {
res.status(401).json(info);
}
})(req, res, next)
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3589 次 |
| 最近记录: |