需要关于如何在快递实际使用Passport身份验证策略帮助(Need help on how to

2019-10-21 03:00发布

假设我有一个剧本像这样的 ,它采用了Passport身份验证策略与快速后端。 我将如何使用这个脚本实际上使API函数调用? 我没有看到链接项目的任何明确的实例文档,也可以找到Passport.js在任何文档 。 谢谢。

Answer 1:

我假设你知道如何使用的护照,你会弄明白什么是正确的Fitbit API端点(老实说,我不知道)。 说,让我给一个想法,可能会帮助您解决问题:

// An awesome npm module (https://github.com/mikeal/request)
var request = require('request');

//
// 
// 

// An express route.
app.get('/activities', function (req, res) {
   if (req.user !== null) {

      // User is authenticated.
      getUserActivities(req.user.id, res);
    } else {

      // Redirect to login the user isn't authenticated.
      res.redirect('/login');
    }
});

// This function will make API calls to Fitbit
// using the User ID we got from the PassportJS
// authentication process.
function getUserActivities(id, res) {

// It will request from Fitbit User activities.
request('https://api.fitbit.com/1/user/'+ id +'/activities/',
     function (error, response, body) {
        if (!error && response.statusCode == 200) {

            // If everything goes well.
            return res.send(body);
        } else {

            // If something wrong happens.
            return res.send(error);
        }
);

}

这个例子的目的是告诉你,你需要使用PassportJS获得fitbit用户ID, 然后使用该ID来进行API调用来fitbit。



Answer 2:

Passport用户序列化完成后,每个请求具有user字段,其中包含传递给信息done回调passport.serializeUser方法。

app.get('/userID', function (req, res) {
    if (req.isAuthenticated()) {
        res.json(req.user.id);
    }
    res.redirect('/login');
}

此外,您还可以访问session

app.get('/auth/fitbit/callback', 
    passport.authenticate('fitbit', { failureRedirect: '/login' }),
    function(req, res) {
        req.session.loggedInAt = Date.now();
        res.redirect('/');
});

信息存储在session中的所有请求提供,而用户通过认证

app.get('/someroute', function (req, res) {
    // call to another service
    var url = 'http://superservice.com/' + req.user.id + '/' + req.session.loggedInAt
    http.get(url, function (_res) {
       res.send(_res.data)
    });
});


文章来源: Need help on how to actually use Passport authentication strategy in Express