node.jsでexpress+PostgreSQL+session-expressを利用する

現在の環境

・CentOS6.8
・PostgreSQL9.6
・node.js7.10.0

インストール

$ npm install –save express-session
$ npm install –save connect-pg-simple

セッション余のテーブルを展開する

$ psql -U datauser z_event_db < node_modules/connect-pg-simple/table.sql

app.js

var session = require(‘express-session’);
var pgSession = require(‘connect-pg-simple’)(session);

app.use(session({
    store: new pgSession({
        pg : pg,
       conString : 'postgres://hogeuser:hogepass@localhost:5432/xxx_db',
       crear_interval : 60 * 60 // 保存期間(sec)
    }),
    secret : 'secret', // Cookieの暗号化に利用するキー
    resave : false, // true:セッション内容に変更がない場合にも保存する
    saveUninitialized : false, // true:新規にセッションを生成して何も代入されていなくても値を入れる
    rolling : true, // true:アクセスの度に、有効期限を伸ばす
    cookie : {
       httpOnly : false, // cookieへのアクセスをHTTPのみに制限しない
       maxAge : 60 * 60 * 1000 // クッキーの有効期限(msec)
    }
}));

index.js

Bingingが何故かうまくいかなくて、SQL作ってます(^^;

var express = require('express');
var router = express.Router();

/* Session */
var loginCheck = function( req, res, next ){
    if( req.session.user ) {
       next();
    } else {
       res.redirect('login');
    }
};

/* GET home page. */
router.get('/', loginCheck, function(req, res, next) {
    res.redirect('login');
    // res.render('index', { title: 'Express' });
});
module.exports = router;

loginchk.js

var express = require('express');
var router = express.Router();
var pg = require('pg');

/* GET home page. */
router.post('/', function(req, res, next) {
    var strUser = req.body["user"];
    var strPass = req.body["passwd"];

    console.log( "user:" + strUser + " pass:" + strPass );

    var con = "tcp://datauser@localhost:5432/z_event_db";
    pg.connect( con, function( erro, client ) {

       var qStrSel = 'SELECT login_name, login_passwd FROM d_eventor WHERE';
       qStrSel += " login_name='" + strUser + "'";
       qStrSel += ' AND';
       qStrSel += " login_passwd='" + strPass + "'";
       qStrSel += ';';
       var query = client.query( qStrSel );
       console.log( "sql:" + qStrSel );

       var query = client.query( qStrSel );

       query.on( 'end', function( row, err ) {
          req.session.user = strUser; // セッションに保存
          res.render('loginchk', {
             title : 'ログイン成功画面',
             content: 'login',
             user : strUser,
             pass : strPass
          });
       });
       query.on( 'error', function( error ){
          res.render('loginchk', {
             title : 'ログイン不成功画面',
             content: 'login',
             user : strUser,
             pass : strPass
          });
       });
    });
});

module.exports = router;


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です