connect のセッション ミドルウェアでセッションの開始を制御する方法はありますか?
たとえば、高速アプリ構成がある場合:
var app = express();
app.configure(function(){
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('secret'));
app.use(express.session({ store:sessionStore, ... }));
});
その後、すべてのリクエストで、セッション Cookie が指定されていない場合、セッションが開始されます。ユーザーが認証された場合にのみセッションを開始したい場合はどうすればよいですか?
たとえば、 と の 2 つのルートがある/protected
とし/login
ます。
- 誰かが
/protected
セッション cookie なしでヒットした場合、ミドルウェアは新しいセッションを開始しません。(req.session
はnull
) - 誰かが
/protected
セッション cookie をヒットすると、ミドルウェアはcookieと set に一致するアクティブなセッションがあるかどうかを確認しますがreq.session
、新しいセッションは開始しません。(req.session
値を持つか、またはnull
) - 誰かが
/login
正しいパラメーターでヒットした場合、セッションが明示的に開始され、Cookie が設定されます。
セッションを開始する唯一の方法は、明示的に行う必要があります。
app.post('/login', function(req, res, next) {
// connect to database and validate user...
db.authenticate( req.body.user, req.body.pass, function(allow) {
if (allow) {
// START SESSION HERE
// this will send set the cookie
}
});
}
既存の接続セッション ミドルウェアでこれを達成する方法はありますか?