用PostgreSQL安装PassportJS
是否有与PostgreSQL设置PassportJS的演练教程(即用PostgreSQLreplaceMongoDB)?
那么这是开放的一段时间,但因为我发现自己在这里相同的问题呢。 你唯一需要做的是用Postgres来定义localStrategy,像这样:
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'}); }); }));
然后定义passport.serializeUser和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); });
它应该准备好了。 希望这可以帮助。
乔的回答对我来说非常有帮助! 如果有其他人遇到以下错误:
TypeError: Converting circular structure to JSON
我发现修改:
(username, password, done) => {
包括请求帮助:
(req, email, password, done)
干杯
有许多ORM可用于Postgres和nodeJS。 例如Sequelize,CaminateJS等。您可以根据您的要求和方便使用这些中的任何一个。
当然你也可以用passportJS。 一些好的文章,我发现是
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