2017-02-10 92 views
1

將用戶重定向到Facebook進行登錄,然後創建用戶,將它們存儲在我的數據庫中並重定向到/ auth/facebook/callback後,以下快速代碼會返回令牌。我如何使用callbacks/promises/observables /獲取此令牌?在我的前端客戶端中,並將其作爲用戶瀏覽器中的本地窗口變量存儲在角度2身份驗證服務中以供會話期間使用?Angular 2身份驗證 - 存儲使用的passportjs令牌

userRouter.get('/auth/facebook/callback', function(req,res,next){ 
    passport.authenticate('facebook', function(err, user, info) {   
    if (err) { 
     return next(err); 
    } 
    if (!user) { 
     return res.status(401).json({ 
     err: info 
     }); 
    } 
    req.logIn(user, function(err) { 
     if (err) { 
     return res.status(500).json({ 
      err: 'Login failed' 
     }); 
     } 
     var token = Verify.getToken(user); 
     res.status(200).json({ 
     status: 'Login successful', 
     success: true, 
     token: token 
     }); 
    }); 
    })(req,res,next); 
}); 

回答

0

如果不使用ngrx store,我建議乾脆用localStorage

設置:

localStorage.setItem('token', this.token); 

要獲取:

localStorage.getItem('token'); 

刪除:

localStorage.removeItem('token'); 

這應該讓你開始:

login(something: string): Observable<boolean> { 
    return this.http 
     .post(this.authUrl, JSON.stringify({ }), { headers: this.headers }) 
     .map((response: Response) => { 
      let responseObject = response.json();   
      let token = responseObject.token;  
      localStorage.setItem('token', JSON.stringify({ token: this.token})); 
      return true; 
     }); 
    } 

如果您保存在localStorage的JSON對象就像在我的例子,你需要分析它:

JSON.parse(localStorage.getItem('token')); 
+0

嗨Frecia,這是非常有用的,但我不知道如何真正得到令牌進入我的角2的應用程序。 localhost:3000/users/auth/callback?= ....是一個帶有json對象的白頁面,其中包含從後端的passportjs返回的令牌和成功消息。如何將該json對象重定向到我的角度應用程序? – seanEd

+0

我需要一個回調或承諾或什麼,因爲他們必須通過Facebook登錄,然後重定向。 – seanEd

+0

這樣的事情:login(data).then((result){console.log(result)})應該保存用戶數據 – FRECIA

相關問題