如何使用护照和快递显示自定义错误消息
我在注册用户时检查电子邮件是否已经存在。 如果用户已经存在,我会传递错误消息“email already exists”。 但在前端显示“未经授权”错误401.我想通过从后端传递到前端的错误消息,但它通过默认消息。 下面是我如何检查用户是否已经存在并发送错误信息,
exports.register = new LocalStrategy({ usernameField: 'email', passReqToCallback: true }, function(req, email, password, done,res) { var newUser = new User({ email: email, password: password, name: req.body.fname }); var searchUser = { email: email }; User.findOne(searchUser, function(err, user) { if (err) return done(err); console.log("err "+err); if (user) { return done(null, false, { message: "email already exists" }); } newUser.save(function(err) { console.log("newUser "+newUser); done(null, newUser); }) }); });
我使用护照进行身份validation,
authRouter.post('/signup', passport.authenticate('local-register'),function(req, res) { createSendToken(req.user, res); });
错误消息不是我传递给前端的那个。 它显示未经授权的错误,这是默认错误。 当我在前台的控制台中显示错误消息时,
Object {data: "Unauthorized", status: 401, config: Object, statusText: "Unauthorized"}
你并不是说在你的前端需要输出什么,但是我猜你想让data
成为你在LocalStrategy
设置的message
。
这是一个方法来做到这一点:
authRouter.post('/signup', function(req, res, next) { passport.authenticate('local-register', function(err, user, info) { if (err) { return next(err); } if (!user) { res.status(401); res.end(info.message); return; } createSendToken(req.user, res); })(req, res, next); });
- ejs模板没有正确渲染
- 在Passport-Mongoose-Local中使用Mongoose-Role
- 护照js本地策略自定义callback显示用户为false和信息为“缺less凭据”
- Nodejs Passportvalidationcallback没有被错误地调用
- 护照loginauthentication没有密码字段
- 如何在使用护照-http Basic +护照 – 本地组合时防止www-authenticate头
- Express路由器创build一个不需要的新会话
- Passport + Node – req.isAuthentiated不是Object.isLoggedIn中的函数
- 成功,但依然使用failureRedirect – 护照