💩
`express-session`でセッション情報が渡らない
Node.js + express-sessionにてreq.session.useridが渡らないということがありました。
signin.jsで発効したuseridセッションをindex.jsへ渡すことを目的としています。
先に結論です。
app.js
app.use(session({
secret: 'the secret',
resave: false,
saveUninitialized: true,
cookie: { secure: true } // ここを削除
}))
背景
ここでセッションを発効して
route/signin.js
req.session.userid = results.rows[0].id;
route/index.jsで受け取りたいが、、、
route/index.js
router.get('/', (req, res, next) => {
const isAuth = Boolean(req.session.userid);
console.log(req.session)
req.session.userid = undefinedとなってしまっていました。
これでは、ログイン状況によってページを出し分けるような処理ができません。
原因
公式にて注意されていました。ゴメンナサイ。
Note be careful when setting this to true, as compliant clients will not > send the cookie back to the server in the future if the browser does not > have an HTTPS connection.
HTTPS接続じゃないなら、機能しないで。ってことだったみたいです。
localhost:3000がそうじゃないための、不具合だったのかなと。
Discussion