配置Passport以接受没有正文的请求?

时间:2014-12-13 22:02:25

标签: node.js passport.js

我正在设置一个LocalStrategy,可以在没有请求正文中提供的凭据的情况下登录

app.post('/signin', passport.authenticate('local-signin', {failureFlash : true}), function (req, res) {
    res.send(req.user);
});

这是策略:

passport
    .use('local-signin', new LocalStrategy({
        usernameField : 'email',
        passwordField : 'password',
        passReqToCallback : true
    }, 
    function (req, email, password, done) {
        if (email.length > 0 && password.legnth > 0) {
             /** Do some stuff with credentials **/
        }
        else {
             console.log('method2');
             /** Other method to log in with request headers...**/
        }
    });

不幸的是,当我向/signin发布一个没有正文的请求时,我有一个状态400错误,并且未加载策略(在示例中我没有在控制台中写入method2 )。

有没有办法将Passport配置为接受没有正文的请求?

有关信息,我使用AngularJS前端,使用$http.post('/signin');

发出请求

护照版本: 0.2.1

护照 - 本地版本: 1.0.0

1 个答案:

答案 0 :(得分:2)

passport.authenticate中间件包含在其他类似的内容中

app.post('/signin', myPass, function(req,res){res.send(req.user)});

function myPass(req, res, next){
    // do your thing
    passport.authenticate('local-signin', {failureFlash : true})(req, res, next);
    // ^ this returns a middleware that you gotta call here now ^
}