相关疑难解决方法(0)

与JWT的Facebook护照

我一直在我的服务器上使用Passport进行用户身份验证.当用户登录本地(使用用户名和密码),服务器就给他们一个JWT存储在本地存储,并且被发送回服务器,每个API调用需要用户身份验证.

现在我也想支持Facebook和Google登录.自从我开始使用Passport后,我认为最好继续使用Passport策略,使用passport-facebookpassport-google-oauth.

我将参考Facebook,但两种策略的行为都相同.它们都需要重定向到服务器路由('/ auth/facebook''/ auth/facebook/callback').该过程是成功的,以保存用户,包括他们的Facebook \谷歌ID和令牌上的令牌.

在服务器上创建用户时,会创建一个JWT(不依赖于从facebook\google收到的令牌).

     ... // Passport facebook startegy
     var newUser = new User();
     newUser.facebook = {};
     newUser.facebook.id = profile.id; 
     newUser.facebook.token = token; // token received from facebook
     newUser.facebook.name  = profile.displayName;   
     newUser.save(function(err) {
          if (err)
               throw err;
          // if successful, return the new user
          newUser.jwtoken = newUser.generateJwt(); // JWT CREATION!
          return done(null, newUser);
     });
Run Code Online (Sandbox Code Playgroud)

问题是,在创建之后,我找不到将JWT发送到客户端的正确方法,因为我还应该重定向到我的应用程序.

app.get('/auth/facebook/callback',
    passport.authenticate('facebook', {
        session: false,
        successRedirect …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js passport-facebook express-jwt passport.js

21
推荐指数
1
解决办法
4611
查看次数