我正在編寫身份驗證中間件,它應該在成功登錄我們的註銷後重定向到先前訪問的頁面。下面是完整的配置塊:Express.js:使用會話中間件後無法重定向
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)
下,快速拋出錯誤:錯誤:發送之後無法設置頭。
如果我提出上述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;
}
你可以提供一些關於authCheck.run的更多信息 – Menztrual
請參閱上面 –
根本就沒有任何路線嗎?有什麼特別的事情會引發錯誤嗎? – Menztrual