Есть ли учебное руководство по настройке PassportJS с PostgreSQL (т.е. замена MongoDB на PostgreSQL)?
Установка PassportJS с PostgreSQL
Ответ 1
Хорошо, что это открыто на некоторое время, но так как я обнаружил, что с тем же вопросом здесь он идет. Единственное, что вам нужно сделать, это определить localStrategy с Postgres, например:
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'pass'
},
(username, password, done) => {
log.debug("Login process:", username);
return db.one("SELECT user_id, user_name, user_email, user_role " +
"FROM users " +
"WHERE user_email=$1 AND user_pass=$2", [username, password])
.then((result)=> {
return done(null, result);
})
.catch((err) => {
log.error("/login: " + err);
return done(null, false, {message:'Wrong user name or password'});
});
}));
а затем определите паспорт. СериализоватьUser и passport.deserializeUser:
passport.serializeUser((user, done)=>{
log.debug("serialize ", user);
done(null, user.user_id);
});
passport.deserializeUser((id, done)=>{
log.debug("deserualize ", id);
db.one("SELECT user_id, user_name, user_email, user_role FROM users " +
"WHERE user_id = $1", [id])
.then((user)=>{
//log.debug("deserializeUser ", user);
done(null, user);
})
.catch((err)=>{
done(new Error(`User with the id ${id} does not exist`));
})
});
Затем определите свой маршрут:
app.post('/', passport.authenticate('local'), (req, resp)=>{
log.debug(req.user);
resp.send(req.user);
});
И он должен быть готов к работе. Надеюсь, это поможет.
Ответ 2
Ответ Джо был очень полезен для меня! В случае, если кто-то еще сталкивается со следующей ошибкой:
TypeError: Converting circular structure to JSON
Я обнаружил, что изменение:
(username, password, done) => {
включить req как таковой помог:
(req, email, password, done)
Приветствия
Ответ 3
Существует много доступных ORM, которые вы можете использовать для Postgres с nodeJS. Например. Sequelize, CaminateJS и т.д. Вы можете использовать любой из них в соответствии с вашими требованиями и удобством.
И, конечно, вы можете использовать паспортный код с этим. Некоторые хорошие статьи, что я нашел,
http://www.hamiltonchapman.com/blog/2014/3/25/user-accounts-using-sequelize-and-passport-in-nodejs
https://sarabinns.com/tag/passport-js-sequelize-postgresql/
http://anneblankert.blogspot.in/2015/06/node-authentication-migrate-from.html