我正在使用具有本地策略的护照。但是我想在navigationItem
与(credential
不匹配时发送消息和状态
这是代码
router.js
user is not exit is DB
在控制器文件上
const passport = require('passport');
const passportConfig = require('../passport')
const passportSignIn = passport.authenticate('local', { session: false });
router.route('/login',)
.post(passportSignIn,controller.login)
passport.js
login: async (req, res, next) => {
console.log(req.body);
res.json({status:200})
}
客户代码
当用户单击passport.use(new LocalStrategy({
usernameField: 'email'
}, async (email, password, done) => {
const user = await db.User.findOne({where: {email: email}});
if (!user) {
return done(null, false,{message:"No user exit"});
}
const isMatch = await bcrypt.compare(password, user.dataValues.password);
console.log(isMatch, 'isMatch');
if (!isMatch) {
return done(null, false);
}
// Otherwise, return the user
done(null, user);
}))
按钮时,它首先进入login
路径,然后进入/login
功能或以下功能。
passportSignIn
现在,如果找不到用户,我想在客户端发送此消息作为响应(“无用户退出”)
`new LocalStrategy({
usernameField: 'email'
}, async (email, password, done) => {`
答案 0 :(得分:1)
您必须像这样更新登录控制器:
login: (req, res, next) => {
console.log(req.body);
passport.authenticate('yourStrategy', function(err, user, info) {
if (err) {
return res.status(500).json("Internal Server Error");
}
if (!user) {
// This 'info' variable below would be - { message: "No user exit" }
// as you passed in the done() callback as the third param
return res.status(404).json(info.message);
}
}
}