用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