在post API中redirect错误

我正在使用node.js restify和passport模块,restify-ensure-login模块执行用户loginauthenticationfunction。

https://www.npmjs.com/package/restify-ensure-login

这里是相关的代码;

var passport = require('passport'); var Strategy = require('passport-local').Strategy; passport.use(new Strategy( function(username, password, cb) { db.users.findByUsername(username, function(err, user) { if (err) { return cb(err); } if (!user) { return cb(null, false); } if (user.password != password) { return cb(null, false); } return cb(null, user); }); })); passport.serializeUser(function(user, cb) { cb(null, user.id); }); passport.deserializeUser(function(id, cb) { db.users.findById(id, function (err, user) { if (err) { return cb(err); } cb(null, user); }); }); var server = restify.createServer({ name: 'myapp', version: '1.0.0' }); var api_post_login = function (app) { function respond(req, res, next) { res.redirect('/'); return next(); }; //function respond(req, res, next) { // Routes app.post('/login', passport.authenticate('local', { successReturnToOrRedirect: '/', failureRedirect: '/login' }) ); } //var api_get_login = function (app) { api_post_login(server); 

问题在于api_post_login() 。 如果在login页面调用HTTPfunction进行用户名和密码的authentication时会出现如下错误,

 { code: "InternalError", message: "res.redirect() requires a next param (function) is required" } 

你需要使用passport-restify而不是passport 。 所以npm install passport-restify ,然后把require改成var passport = require('passport-restify');