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

时间:2012-05-09 19:49:23

标签: node.js middleware

我使用Passport-Local(https://github.com/jaredhanson/passport-local)通过node.js进行身份验证。到目前为止,这个例子就像一个魅力,因为用户正在登录后网页形式:

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

但是,现在,我想编写一个基于JSON的API,通过调用特定的URL来验证用户身份。将代码块修改为app.get(…不起作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

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

req.body = req.query;

也许不是完美的解决方案,但它肯定比黑客护照好。 ;)

另请注意,本地护照中有待处理的待处理请求可解决此问题:https://github.com/jaredhanson/passport-local/pull/12

答案 1 :(得分: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);