如何发送错误信息给客户端?

时间:2018-08-20 09:43:24

标签: javascript jquery node.js sequelize.js passport.js

我正在使用具有本地策略的护照。但是我想在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) => {`

1 个答案:

答案 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);
            }
        }
      }
相关问题