使用SailsJS在PostgreSQL中连接会话

时间:2016-01-02 13:28:12

标签: postgresql sails.js connect

我在SailsJS,Passport-Local和PostgreSQL中有个人项目。我设法在PostgreSQL DB中获得连接并保存用户。但是我对会话存储有很大的问题。据我所知,SailsJS正在使用Connect来完成它。

MongoDB以前的工作代码:

connections: {
    prodMongodbServer: {
        adapter: 'sails-mongo',
        host: 'localhost',
        port: 27017,
        //user: '',
        //password: '',
        database: 'sails-auth'
    }
},

session: {
    adapter: 'mongo',
    host: 'localhost',
    port: 27017,
    db: 'sails-auth',
    collection: 'sessions'
}

我与PostgreSQL的(工作)连接:

connections: {
    somePostgresqlServer: {
      adapter: 'sails-postgresql',
      host: 'localhost',
      port: 5432,
      user: 'postgres',
      password: 'Password1',
      database: 'sails-auth'
    }
},

我遇到问题的代码:

session: {
    adapter: 'connect-pg-simple',
    host: 'localhost',
    port: 5432,
    user: 'postgres',
    password: 'Password1',
    db: 'sails-auth'
}

我已经安装了connect-pg-simple,执行了SQL代码,但是当我启动sails app时出现错误:

$ sails lift

info: Starting app...

Init Express midleware
Failed to prune sessions: password authentication failed for user "myPcUser"
info:
info:                .-..-.
info:
info:    Sails              <|    .-..-.
info:    v0.11.3             |\
info:                       /|.\
info:                      / || \
info:                    ,'  |'  \
info:                 .-'.-==|/_--'
info:                 `--'-------'
info:    __---___--___---___--___---___--___
info:  ____---___--___---___--___---___--___-__
info:

我认为使用connect-pg可能更好,但它需要很多依赖才能使我保持简单版本。谁知道这个问题是关于什么的?我在Windows上,所以它很奇怪,我的PC用户有问题......

也许某人有一些解决方案可以为用户等使用PostgreSQL,为会话使用Mongo。对于我已经测试过的Passport不允许这样做(用户可以注册但无法登录)

3 个答案:

答案 0 :(得分:1)

也许您可以修复此错误打开PostgreSQL客户端身份验证配置文件: /var/lib/pgsql/data/pg_hba.conf

并改变:

本地所有信任

托管所有127.0.0.1/32 trust

保存并关闭文件。重启Postgresql服务器:

service postgresql restart

答案 1 :(得分:1)

使其正常工作

  1. 安装connect-pg-simple节点模块:$ npm install connect-pg-simple

  2. 在session.js中定义适配器和连接字符串:

adapter: 'connect-pg-simple', conString: 'postgres://user:pass@host:5432/dbname', 3)在node_modules / connect-pg-simple / table.sql文件上运行SQL命令以创建会话表。 : CREATE TABLE "session" ( "sid" varchar NOT NULL COLLATE "default", "sess" json NOT NULL, "expire" timestamp(6) NOT NULL ) WITH (OIDS=FALSE);

ALTER TABLE "session" ADD CONSTRAINT "session_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE;

CREATE INDEX "IDX_session_expire" ON "session" ("expire");

答案 2 :(得分:0)

我用于sails-pg-session。 有关会话的信息必须存储在config / session.js:

adapter: 'sails-pg-session',
database: 'dbname',
  host: 'localhost',
  user: 'dbuser',
  password: 'dbpasswd',
  port: 5432

希望有所帮助