如何通过get请求对node.js Passport进行身份验证?

如何通过get请求对node.js Passport进行身份验证?,node.js,middleware,Node.js,Middleware,我用的是当地护照(https://github.com/jaredhanson/passport-local)使用node.js进行身份验证。到目前为止,这个例子很有魅力,因为用户是通过一个post webform登录的: app.post('/login', passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }), function(req, res) {

我用的是当地护照(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(…不起作用


有什么建议吗?

我遇到了同样的问题,并通过将其添加到我的路由处理程序中进行登录来解决:

req.body = req.query;
也许不是完美的解决方案,但肯定比破解护照要好

还请注意,passport local中有一个未决的请求来解决此问题:

也许策略对您有用

它允许使用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);

更新:似乎passport正在使用
req.body
作为用户名/密码。如果我破解passport local以使用
req.query
,它就会工作。不过,这不是我喜欢的方法……这个问题已经过时了,因为它即将迎来三周年纪念日:-)无论如何,谢谢你的回答!