認証ミドルウェアを作成していますが、ログアウトに正常にログインすると、以前にアクセスしたページにリダイレクトされるはずです。完全な構成ブロックは次のとおりです。
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.static(__dirname + '/public'));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: '__YouDontKnow__', store: new RedisStore }));
app.use(authCheck.run);
app.use(express.methodOverride());
app.use(app.router);
});
app.use(authCheck.run)
が下にある場合app.use(express.session)
、Expressはエラーをスローします。エラー:送信後にヘッダーを設定できません。
この呼び出しを上に移動すると、セッションが未定義app.use(express.session)
であることを示す500エラーがスローされます。そして、私の認証機能はセッションオブジェクトに依存しています。
私に何ができる?
編集:これがauthCheck関数です:
exports.run = function (req, res, next) {
var urlparser = GLOBAL.urlparser,
url = req.urlp = urlparser.parse(req.url, true),
goToLastPage = function() {
var redirectUrl = (req.session.lastVisitedPage) ? req.session.lastVisitedPage : '/';
console.log("goToLastPage(%s)", redirectUrl);
res.redirect(redirectUrl);
return;
}
// Log out
if (url.pathname == '/user/logout') {
req.session.destroy();
console.log('User has logged out');
goToLastPage();
}
// Log in
if (url.pathname == '/user/login' && req.method == 'POST') {
var email = req.body.login.email,
password = req.body.login.password;
req.session.auth = true;
req.session.userId = 1;
console.log('User has logged in');
goToLastPage();
}
next();
return;
}