{"id":4200,"date":"2017-05-21T23:37:15","date_gmt":"2017-05-21T14:37:15","guid":{"rendered":"https:\/\/kumapress.com\/wp\/?p=4200"},"modified":"2017-06-15T19:17:14","modified_gmt":"2017-06-15T10:17:14","slug":"node-js%e3%81%a7expresspostgresqlsession-express%e3%82%92%e5%88%a9%e7%94%a8%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"https:\/\/kumapress.com\/?p=4200","title":{"rendered":"node.js\u3067express+PostgreSQL+session-express\u3092\u5229\u7528\u3059\u308b"},"content":{"rendered":"<h2><span style=\"font-family: arial, helvetica, sans-serif;\">\u73fe\u5728\u306e\u74b0\u5883<\/span><\/h2>\n<p>\u30fbCentOS6.8<br \/>\n\u30fbPostgreSQL9.6<br \/>\n\u30fbnode.js7.10.0<\/p>\n<h2>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h2>\n<p><span style=\"font-weight: 400;\">$ npm install &#8211;save express-session<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">$ npm install &#8211;save connect-pg-simple<\/span><\/p>\n<h3>\u30bb\u30c3\u30b7\u30e7\u30f3\u4f59\u306e\u30c6\u30fc\u30d6\u30eb\u3092\u5c55\u958b\u3059\u308b<\/h3>\n<p>$ psql -U datauser z_event_db &lt; node_modules\/connect-pg-simple\/table.sql<\/p>\n<h3>app.js<\/h3>\n<p>var session = require(&#8216;express-session&#8217;);<br \/>\nvar pgSession = require(&#8216;connect-pg-simple&#8217;)(session);<\/p>\n<p><code>app.use(session({<\/code><br \/>\n<code>\u00a0 \u00a0 store: new pgSession({<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0 pg : pg,<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0conString : 'postgres:\/\/hogeuser:hogepass@localhost:5432\/xxx_db',<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0crear_interval : 60 * 60 \/\/ \u4fdd\u5b58\u671f\u9593(sec)<\/code><br \/>\n<code>\u00a0 \u00a0 }),<\/code><br \/>\n<code>\u00a0 \u00a0 secret : 'secret', \/\/ Cookie\u306e\u6697\u53f7\u5316\u306b\u5229\u7528\u3059\u308b\u30ad\u30fc<\/code><br \/>\n<code>\u00a0 \u00a0 resave : false, \/\/ true\uff1a\u30bb\u30c3\u30b7\u30e7\u30f3\u5185\u5bb9\u306b\u5909\u66f4\u304c\u306a\u3044\u5834\u5408\u306b\u3082\u4fdd\u5b58\u3059\u308b<\/code><br \/>\n<code> \u00a0 \u00a0 saveUninitialized : false, \/\/ true\uff1a\u65b0\u898f\u306b\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u751f\u6210\u3057\u3066\u4f55\u3082\u4ee3\u5165\u3055\u308c\u3066\u3044\u306a\u304f\u3066\u3082\u5024\u3092\u5165\u308c\u308b<\/code><br \/>\n<code> \u00a0 \u00a0 rolling : true, \/\/ true\uff1a\u30a2\u30af\u30bb\u30b9\u306e\u5ea6\u306b\u3001\u6709\u52b9\u671f\u9650\u3092\u4f38\u3070\u3059<\/code><br \/>\n<code> \u00a0 \u00a0 cookie : {<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0 httpOnly : false, \/\/ cookie\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092HTTP\u306e\u307f\u306b\u5236\u9650\u3057\u306a\u3044<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0 maxAge : 60 * 60 * 1000 \/\/ \u30af\u30c3\u30ad\u30fc\u306e\u6709\u52b9\u671f\u9650(msec)<\/code><br \/>\n<code> \u00a0 \u00a0 }<\/code><br \/>\n<code> }));<\/code><\/p>\n<h3>index.js<\/h3>\n<p>Binging\u304c\u4f55\u6545\u304b\u3046\u307e\u304f\u3044\u304b\u306a\u304f\u3066\u3001SQL\u4f5c\u3063\u3066\u307e\u3059(^^;<\/p>\n<p><code>var express = require('express');<\/code><br \/>\n<code>var router = express.Router();<\/code><\/p>\n<p><code>\/* Session *\/<\/code><br \/>\n<code>var loginCheck = function( req, res, next ){<\/code><br \/>\n<code>\u00a0 \u00a0 if( req.session.user ) {<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0 next();<\/code><br \/>\n<code> \u00a0 \u00a0 } else {<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0 res.redirect('login');<\/code><br \/>\n<code> \u00a0 \u00a0 }<\/code><br \/>\n<code>};<\/code><\/p>\n<p><code>\/* GET home page. *\/<\/code><br \/>\n<code>router.get('\/', loginCheck, function(req, res, next) {<\/code><br \/>\n<code> \u00a0 \u00a0 res.redirect('login');<\/code><br \/>\n<code>\u00a0 \u00a0 \/\/ res.render('index', { title: 'Express' });<\/code><br \/>\n<code>});<\/code><br \/>\n<code>module.exports = router;<\/code><\/p>\n<h3>loginchk.js<\/h3>\n<p><code>var express = require('express');<\/code><br \/>\n<code>var router = express.Router();<\/code><br \/>\n<code>var pg = require('pg');<\/code><\/p>\n<p><code>\/* GET home page. *\/<\/code><br \/>\n<code>router.post('\/', function(req, res, next) {<\/code><br \/>\n<code> \u00a0 \u00a0 var strUser = req.body[\"user\"];<\/code><br \/>\n<code> \u00a0 \u00a0 var strPass = req.body[\"passwd\"];<\/code><\/p>\n<p><code>\u00a0 \u00a0 console.log( \"user:\" + strUser + \" pass:\" + strPass );<\/code><\/p>\n<p><code>\u00a0 \u00a0 var con = \"tcp:\/\/datauser@localhost:5432\/z_event_db\";<\/code><br \/>\n<code> \u00a0 \u00a0 pg.connect( con, function( erro, client ) {<\/code><\/p>\n<p><code>\u00a0 \u00a0\u00a0 \u00a0 var qStrSel = 'SELECT login_name, login_passwd FROM d_eventor WHERE';<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0 qStrSel += \" login_name='\" + strUser + \"'\";<\/code><br \/>\n<code>\u00a0 \u00a0\u00a0 \u00a0 qStrSel += ' AND';<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0 qStrSel += \" login_passwd='\" + strPass + \"'\";<\/code><br \/>\n<code>\u00a0 \u00a0\u00a0 \u00a0 qStrSel += ';';<\/code><br \/>\n<code>\u00a0 \u00a0\u00a0 \u00a0 var query = client.query( qStrSel );<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0 console.log( \"sql:\" + qStrSel );<\/code><\/p>\n<p><code>\u00a0 \u00a0\u00a0 \u00a0 var query = client.query( qStrSel );<\/code><\/p>\n<p><code>\u00a0 \u00a0\u00a0 \u00a0 query.on( 'end', function( row, err ) {<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 req.session.user = strUser; \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u306b\u4fdd\u5b58<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 res.render('loginchk', {<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 title : '\u30ed\u30b0\u30a4\u30f3\u6210\u529f\u753b\u9762',<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 content: 'login',<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 user : strUser,<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 pass : strPass<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 });<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0 });<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0 query.on( 'error', function( error ){<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 res.render('loginchk', {<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 title : '\u30ed\u30b0\u30a4\u30f3\u4e0d\u6210\u529f\u753b\u9762',<\/code><br \/>\n<code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0content: 'login',<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 user : strUser,<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 pass : strPass<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0\u00a0 \u00a0 });<\/code><br \/>\n<code> \u00a0 \u00a0\u00a0 \u00a0 });<\/code><br \/>\n<code> \u00a0 \u00a0 });<\/code><br \/>\n<code>});<\/code><\/p>\n<p><code>module.exports = router;<\/code><\/p>\n<aside class=\"row veu_insertAds after\"><div class=\"col-md-6\"><script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\r\n<!-- \u7b2c 1 \u9762 - 2\uff08www.kumapress.com\uff09 -->\r\n<ins class=\"adsbygoogle\"\r\n     style=\"display:block\"\r\n     data-ad-client=\"ca-pub-5987681888830890\"\r\n     data-ad-slot=\"5379270693\"\r\n     data-ad-format=\"auto\"\r\n     data-full-width-responsive=\"true\"><\/ins>\r\n<script>\r\n     (adsbygoogle = window.adsbygoogle || []).push({});\r\n<\/script><\/div><div class=\"col-md-6\"><script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\r\n<!-- \u7b2c 1 \u9762 - 1\uff08www.kumapress.com\uff09 -->\r\n<ins class=\"adsbygoogle\"\r\n     style=\"display:block\"\r\n     data-ad-client=\"ca-pub-5987681888830890\"\r\n     data-ad-slot=\"7353370294\"\r\n     data-ad-format=\"auto\"\r\n     data-full-width-responsive=\"true\"><\/ins>\r\n<script>\r\n     (adsbygoogle = window.adsbygoogle || []).push({});\r\n<\/script><\/div><\/aside>","protected":false},"excerpt":{"rendered":"<p>\u73fe\u5728\u306e\u74b0\u5883 \u30fbCentOS6.8 \u30fbPostgreSQL9.6 \u30fbnode.js7.10.0 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb $ npm install &#8211;save express-session $ npm install  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"vkexunit_cta_each_option":"","footnotes":""},"categories":[143,126],"tags":[134,48,137],"class_list":["post-4200","post","type-post","status-publish","format-standard","hentry","category-node-js","category-blog-memo","tag-node-js","tag-postgresql","tag-session"],"_links":{"self":[{"href":"https:\/\/kumapress.com\/index.php?rest_route=\/wp\/v2\/posts\/4200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kumapress.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kumapress.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kumapress.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kumapress.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4200"}],"version-history":[{"count":6,"href":"https:\/\/kumapress.com\/index.php?rest_route=\/wp\/v2\/posts\/4200\/revisions"}],"predecessor-version":[{"id":4206,"href":"https:\/\/kumapress.com\/index.php?rest_route=\/wp\/v2\/posts\/4200\/revisions\/4206"}],"wp:attachment":[{"href":"https:\/\/kumapress.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kumapress.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kumapress.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}