[英]Passport.js change default error message
I'm using Passport.js for authentication in my node/express app, when input fields are empty passport displays default message "Missing credentials", how can i change that? 我在节点/快捷应用中使用Passport.js进行身份验证,当输入字段为空时,护照显示默认消息“缺少凭据”,我该如何更改? to say something like please fill the form or something
说些类似的东西,请填写表格或类似的东西
here my local strategy for login: 这是我的本地登录策略:
passport.use('login', new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function(email, password, done) {
models.User.findOne({where: {email}}).then(user => {
if (!user)
return done(null, false, {message: 'Email not registered'});
user.checkPassword(password).then(res => {
if (!res)
return done(null, false, {message: 'Incorrect username or password'});
return done(null, user);
});
});
}));
login route: 登录路径:
router.post('/login', passport.authenticate('login', {
successRedirect: '/',
failureRedirect: '/login',
failureFlash: true
}));
I got it, looks like i can pass optional callback to authenticate function to override default functionality, thanks oneturkmen for reference. 我知道了,看来我可以通过可选的回调函数来验证功能以覆盖默认功能,谢谢oneturkmen供参考。
here's modified route: 这是修改后的路线:
router.post('/signup', (req, res) => {
passport.authenticate('signup', (err, user, info) => {
const body = req.body;
if (req.body.username === '' || req.body.email === '' || req.body.password === '')
info.message = 'Please fill the form';
req.logIn(user, err => {
if (err) res.render('users/signup', info);
else res.redirect('/');
});
})(req, res);
});
An alternative is to add " badRequestMessage " to your code 另一种方法是在您的代码中添加“ badRequestMessage ”
Your code will look like this 您的代码将如下所示
router.post('/login', passport.authenticate('login', {
successRedirect: '/',
failureRedirect: '/login',
badRequestMessage : 'Please fill the form',
failureFlash: true
}));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.