簡體   English   中英

Angular 的 Passport Facebook 身份驗證

[英]Passport Facebook authentication for Angular

我正在使用 nodejs+express+mongo 和 angularjs(MEAN)。 我正在使用 Facebook 護照策略登錄,但我似乎無法找到從我的 angular 客戶端訪問用戶信息(req.user)的方法。 需要注意的是,angular front 是在另一個應用程序和 web 服務器上,除了 node express mongo 端。

這是我的 nodejs 代碼:

      passport.serializeUser(function(user, done){
          done(null, user._id);
        });

      passport.deserializeUser(function(id, done){

        UserModel.findById(id, function(err, user){
          done(err, user);
        });
      });

      passport.use(new FacebookStrategy({
          clientID: config.facebook.appId,
          clientSecret: config.facebook.appSecret,
          callbackURL: config.facebook.redirectUri,
          scope: config.facebook.scope,
          profileFields: ['name','displayName','gender','profileUrl','email']

        },
        function(accessToken, refreshToken, profile, done) {

          UserModel.findOne( {$or:[{'facebook_profile.id': profile.id},{'email':profile.emails[0].value}]}, function(err, user){
            var newuser = new UserModel();
            if(err){

              return done(err);
            }
            if(user){
               return done(null, user);
            }
            else {


              newuser.facebook_profile.id = profile.id;
              newuser.facebook_profile.name = profile.displayName

              return done(null, newuser);



            }
          });
        })
      );

        app.get('/auth/is_auth', function(req, res){

          if (req.isAuthenticated()){
            res.json(req.user);

          }
        })

在這之后,我從郵遞員那里打電話給http://localhost:3000/auth/is_auth

但是 req.isAuthenticated() 總是 FALSE

這可能是什么,我永遠無法獲得用戶信息

req.isAuthenticated()是假的,如果你使用 CORS 並且在你的 ajax 請求中你沒有將withCredentials設置為真。 確保withCredentials設置為true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM