首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PostgreSQL安装PassportJS

使用PostgreSQL安装PassportJS
EN

Stack Overflow用户
提问于 2014-02-28 03:47:51
回答 3查看 7.3K关注 0票数 13

是否有使用PostgreSQL设置PassportJS的演练教程(例如,用PostgreSQL替换MongoDB )?

EN

回答 3

Stack Overflow用户

发布于 2015-12-21 19:51:29

好吧,这是开放了一段时间,但自从我发现自己也有同样的问题,在这里它开始了。您唯一需要做的就是使用Postgres定义localStrategy,如下所示:

代码语言:javascript
运行
复制
    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:

代码语言:javascript
运行
复制
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`));
    })
  });

然后定义你的路线:

代码语言:javascript
运行
复制
app.post('/', passport.authenticate('local'), (req, resp)=>{
  log.debug(req.user);
  resp.send(req.user);
});

它应该已经准备好了。希望这能有所帮助。

票数 19
EN

Stack Overflow用户

发布于 2017-09-18 22:08:18

Joe的回答对我非常有帮助!以防其他任何人遇到以下错误:

代码语言:javascript
运行
复制
TypeError: Converting circular structure to JSON

我发现这是在修改:

代码语言:javascript
运行
复制
(username, password, done) => {

要包含该请求,请执行以下操作:

代码语言:javascript
运行
复制
(req, email, password, done)

干杯

票数 2
EN

Stack Overflow用户

发布于 2016-06-28 20:40:45

你可以在nodeJS中使用Postgres,有很多对象关系映射可用。例如,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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22078839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档