Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 如何使用passport和express显示自定义错误消息大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在注册用户时检查电子邮件是否已存在.如果用户已存在,则传递错误消息“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);
        })
    });
});

我使用护照进行身份验证,

authRouter.post('/signup',passport.authenticate('local-register'),res) {
    createSendToken(req.user,res);
});

错误消息不是我传递给前端的消息.它显示未经授权的错误,这是错误.当我在前端的控制台中打印错误消息时,它显示,

Object {data: "Unauthorized",status: 401,config: Object,statusText: "Unauthorized"}

解决方法

您没有在前端说出您想要的输出,但我猜您希望将数据作为您在LocalStrategy中设置的消息.

这是一种方法

authRouter.post('/signup',res,next) {
  passport.authenticate('local-register',user,info) {
    if (err) { return next(err); }
    if (!user) { 
        res.status(401);
        res.end(info.messagE);
        return;
    }
    createSendToken(req.user,res);
  })(req,next);
});

大佬总结

以上是大佬教程为你收集整理的node.js – 如何使用passport和express显示自定义错误消息全部内容,希望文章能够帮你解决node.js – 如何使用passport和express显示自定义错误消息所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。