Skip to content

Commit 1db59e7

Browse files
committed
Fix premature redirect when used with express-session
1 parent 2327a36 commit 1db59e7

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

lib/middleware/authenticate.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,15 @@ module.exports = function authenticate(passport, name, options, callback) {
101101
// accumulator for failures from each strategy in the chain
102102
var failures = [];
103103

104+
function redirect(url) {
105+
if (req.session && req.session.save && typeof req.session.save == 'function') {
106+
return req.session.save(function() {
107+
return res.redirect(url);
108+
});
109+
}
110+
return res.redirect(url);
111+
}
112+
104113
function allFailed() {
105114
if (callback) {
106115
if (!multi) {
@@ -142,7 +151,7 @@ module.exports = function authenticate(passport, name, options, callback) {
142151
}
143152
}
144153
if (options.failureRedirect) {
145-
return res.redirect(options.failureRedirect);
154+
return redirect(options.failureRedirect);
146155
}
147156

148157
// When failure handling is not delegated to the application, the default
@@ -255,10 +264,10 @@ module.exports = function authenticate(passport, name, options, callback) {
255264
url = req.session.returnTo;
256265
delete req.session.returnTo;
257266
}
258-
return res.redirect(url);
267+
return redirect(url);
259268
}
260269
if (options.successRedirect) {
261-
return res.redirect(options.successRedirect);
270+
return redirect(options.successRedirect);
262271
}
263272
next();
264273
}

0 commit comments

Comments
 (0)