【问题标题】:Redirect error in post API发布 API 中的重定向错误
【发布时间】:2016-03-27 09:17:18
【问题描述】:

我正在使用node.js restify和passport模块,restify-ensure-login模块来执行用户登录认证功能。

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()。在登录页面执行HTTP post验证用户名和密码时调用该函数时,出现如下错误;

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

【问题讨论】:

    标签: javascript node.js passport.js restify passport-local


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-21
      • 2020-12-24
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 2012-07-04
      • 2018-08-03
      • 1970-01-01
      相关资源
      最近更新 更多