Make Passport Work with Restify by fixing redirect functionality with this snippet
Having trouble getting Passport working on Restify? You're not alone. Passport will not cleanly work with Restify due to Restify not implementing the 'redirect' method on the res object; the result is a broken passport implementation with errors thrown whenever /FailureRedirect is invoked to redirect a user upon login failure.
No worries, there's an easy fix - just add your own redirect() implementation like this:
server.use(function(req, res, next) {
res.redirect = function(addr) {
res.header('Location', addr);
res.send(302);
}
});
Just add this code right after all your server.use calls and that's it! Now Passport will work with your Restify server, and you also get your res.redirect() back. Easy peasy.
Written by Sebastian Schepis
Related protips
2 Responses
try this instead:
server.use(function(req, res, next) {
res.redirect = function(addr) {
res.header('Location', addr);
res.send(302);
}
done();
});
Note you're adding the redirect function to each response object, inside a middleware function, so you need to let the middleware keep going.
Restify actually does have a redirect method. The problem is that it's signature is different than that of Express. Please see https://www.npmjs.com/package/passport-restify for using Passport w/ Restify.