【问题标题】:nodejs, passportjs and sequelize with passport-local节点 js、护照 js 和护照本地续集
【发布时间】:2017-08-18 15:52:34
【问题描述】:

我需要一些帮助来解决我不理解的问题。

首先,这是我得到的错误:

Error: Route.post() requires callback functions but got a [object Undefined]

我尝试使用本地护照来保护我的 API。

我这样调用 API:

router.route("/login")
.post(passport.authenticate('local', {session: false}) ,login.get);

getToken 函数如下所示:

function get(req, res) {
res.send([{"stack": "overflow"}]);

}

这是我的策略:

var local = new LocalStrategy(options,
function(username, password, done) {
    models.user.findOne({where:{ username: username}}).then(function(err, user) {
        if (err) { return done(err); }
        if (!user) {
            return done(null, false);
        }
        return done(null, user);
    });
});

我的设置有什么问题?

【问题讨论】:

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


    【解决方案1】:

    可能是因为 login.get 实际上是未定义的。 试试这样的:

    router.route('/login')  
     .post(passport.authenticate('local', {session: false}), 
           function (req, res, next) { 
              // callback here
           });
    

    或者其他方式可以是:

    router.post('/login', passport.authenticate('local', {session: false}), function (req, res) { ... });  
    

    【讨论】:

    • login.get 是通过以下方式定义的:module.exports = { get };在登录控制器中
    • 所以你是说它被定义了?你试过记录吗?如果可以,请提供更多代码。
    • 你是对的,我的函数在回调中缺少下一个。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 2020-01-30
    • 2020-08-08
    • 2018-06-21
    • 2017-02-23
    相关资源
    最近更新 更多