我正在设置一个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
答案 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 ^
}