【问题标题】:Passport and ExpressJS, route function not being calledPassport 和 ExpressJS,没有调用路由函数
【发布时间】:2015-01-08 10:02:46
【问题描述】:

我正在使用护照进行一些管理员身份验证,但重定向似乎没有调用我的功能。结果,登录时打印的所有内容都是 [object Object]

我的代码: 路线

app.get('/admin', isLoggedIn, Routes.admin);
        app.get('/login', Routes.adminLogin);
        app.post('/login', passport.authenticate('local-login', {
            successRedirect : '/admin',
            failureRedirect : '/login'
        }));

护照设置

var LocalStrategy = require('passport-local').Strategy;
        passport.serializeUser(function(user,done){
            done(null, user._id);
        });
        passport.deserializeUser(function(id, done){
            user.getCollection().findById(id)
            .on('success', function(doc){done(doc)});
        });
        passport.use('local-login', new LocalStrategy({
            usernameField : 'username',
            passwordField : 'password',
            passReqToCallback : true
        }, function(req,username,password,done){
            user.getName(username)
            .on('success', function(doc){
                if(doc == null || doc.password != password) {return done(null, false, "Invalid password");}
                return done(null, doc);
            })
            .on('error', function(err){return done(err);});
        }));
    };

管理路径:

var adminRoute = exports.adminRoute = function(req,res){
        console.log(" ADMIN PAGE");
        res.render('admin.jade');
    };

【问题讨论】:

  • 您的 adminLogin 路由/控制器是什么样的?
  • 它只是呈现登录页面。没有别的自动取款机。
  • 您的deserializeUser 有问题,它将doc 作为第一个参数传递给done,而不是第二个参数:done(null, doc)。不知道这是否是您的问题的原因。
  • 看起来您已将管理页面路由命名为 adminRoute,而您的重定向正在寻找 admin
  • 我可以看出这可能是多么令人困惑,我将我的路线别名为此处未包含的 Routes 对象。 @robertklep 关于 null 的事情是正确的。我已经添加了答案。

标签: javascript node.js express passport.js


【解决方案1】:

@robertklep 是对的,将 null 作为第一个参数传递给 done inside deserializeUser 起作用了。

passport.deserializeUser(function(id, done){
            user.getCollection().findById(id)
            .on('success', function(doc){done(null,doc)});
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 2017-08-27
    • 2014-11-24
    • 2018-03-08
    • 1970-01-01
    相关资源
    最近更新 更多