如何通过GET请求使用node.js Passport进行身份验证?

3

我正在使用Passport-Local(https://github.com/jaredhanson/passport-local)来实现与node.js的身份验证。到目前为止,这个例子非常好用,因为用户是通过一个post-webform登录的:

app.post('/login', 
    passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }),
    function(req, res) {
        res.redirect('/');
});

现在,我想编写一个基于JSON的API来通过调用特定的URL对用户进行身份验证。然而,将代码块修改为app.get(…并不起作用。
有什么建议吗?

更新:似乎passport正在使用req.body来获取用户名/密码。如果我黑客passport-local来使用req.query,它可以工作。虽然这不是我首选的方法... - mritz_p
2个回答

2

我遇到了同样的问题,并通过在登录路由处理程序中添加以下内容来解决它:

req.body = req.query;

也许不是完美的解决方案,但肯定比黑客攻击护照好。 ;)
还要注意,在passport-local中有一个待处理的请求来解决这个问题:https://github.com/jaredhanson/passport-local/pull/12

0

也许 https://github.com/yarax/passport-url 策略对您有用

它允许使用通过 GET 请求给出的令牌来验证用户

var url = new UrlStrategy({
    failRedirect : "/login",
    varName : "secret"
}, function (secret, done) { // put your check logic here
    if (secret == 'foo') done(null, {id:'bar'});
    else done("wrong");
});

passport.use(url);

这个问题已经有点过时了,因为它即将迎来第三个周年纪念日 :-) 无论如何,感谢您的回复! - mritz_p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接