Javascript 如何在React中使用passportjs策略中的访问消息
如果您有react应用程序,并且不想使用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
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使用该对象