Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在React中使用passportjs策略中的访问消息_Javascript_Reactjs_Passport.js_Message_Flash Message - Fatal编程技术网

Javascript 如何在React中使用passportjs策略中的访问消息

Javascript 如何在React中使用passportjs策略中的访问消息,javascript,reactjs,passport.js,message,flash-message,Javascript,Reactjs,Passport.js,Message,Flash Message,如果您有react应用程序,并且不想使用connect flash访问本地策略生成的消息,您可以使用以下方法: 我的passport本地策略,我使用的是sqlite数据库: passport.use( new LocalStrategy({ usernameField: 'name' }, (name, password, done) => { //Match user db.get(`SELECT * FR

如果您有react应用程序,并且不想使用
connect flash
访问本地策略生成的消息,您可以使用以下方法:

我的passport本地策略,我使用的是sqlite数据库:

 passport.use(
        new LocalStrategy({ usernameField: 'name' },
        (name, password, done) => {
            //Match user
            db.get(`SELECT * FROM Users WHERE name = '${name}'`, (err, user) => {
                if(err) throw err;
                if(!user) {
                    return done(null, false, { message : 'Username not registered' });
                }
                //Match password
                bcrypt.compare(password, user.password, (err, isMatch) => {
                    if(err) throw Error;
                    if(isMatch) {
                        done(null, user, { message : 'Log in successful' });
                    } else {                        done(null, false, { message : 'Password incorrect' })
                    }
                });
            })
        })
    );

您可以为您的/登录路径使用自定义回拨功能:

app.post('/login', (req, res, next) => {
    passport.authenticate('local', (err, user, info) => {
      if (err) { return next(err); }
      if (!user) { return res.json(info); }
      req.logIn(user, (err) => {
        if (err) { return next(err); }
        return res.json(info);
      });
    })(req, res, next);
  });
info参数包含作为策略中done()中的第三个参数传递的对象,可以添加到res的主体中,因此react使用该对象