Node.jsがセッションを覚えていないようです。Node.jsセッションログイン
ミドルウェアとしてcookie-parser
およびexpress-session
のExpressを使用しています。
私のアプリケーションでは、Mongoを使用してユーザー名とパスワードを保持しています。
次はMWEです:
var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var app = express();
app.use(cookieParser({
secret: 'derma-aid'
}));
app.use(session({
secret: 'derma-aid',
resave: false,
saveUninitialized: false,
cookie: {secure: false}
}));
// CORS (Cross-Origin Resource Sharing) headers to support Cross-site HTTP requests
app.all('*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'X-Requested-With');
next();
});
app.get('/login', function(req, res)
{
console.log('login');
req.session.user_id = 500;
res.send('<h1>login</h1>');
});
app.get('/view', function(req, res)
{
console.log('view id: ' + req.session.user_id);
res.send('<h1>view: ' + req.session.user_id + '</h1>');
});
app.get('/logout', function(req, res)
{
console.log('logout: ' + req.session.user_id);
res.send('<h1>logout: ' + req.session.user_id + '</h1>');
delete req.session.user_id;
});
app.listen(5000);
あなたはhttp://localhost:5000/login
にブラウザに行く場合は、req.session.user_id
が設定されるべきであるとhttp://localhost:5000/view
に正しく表示します。 @tibluにより示唆されるようにcookie: {secure: false}
:
しかし、代わりに、私は未定義のメッセージを取得しています...
EDIT。私はこのエラーを受け取ります:TypeError: Secret string must be provided.
。セッションミドルウェアの設定変更で
ああを修正するために管理しました。 'TypeError:Secret stringを指定する必要があります。 –
私はこのエラーを解決できました。 'cookieParser( 'derma-aid')の代わりに' cookieParser({secret: 'derma-aid'}) 'を使用したためです。ほとんどのエクスプレスライブラリはオプションの辞書を使っているので混乱しました。 –