2016-11-20 105 views
0

因此,我正在使用angular2應用程序,並試圖在登錄後生成JWT,以便可以獲取用戶的配置文件信息。我可以成功登錄,那是我生成令牌的時候。登錄後,我將用戶路由到配置文件頁面,這就是我調用我的api來獲取用戶信息的地方。所有這些只有在我登錄並刷新頁面後纔有效。上述localStorage中的JWT僅在刷新頁面後才起作用

this.auth_service 
     .Login(this.email, this.password) 
     .subscribe(
       data => { 
         this.global_events.change_nav_bar.emit(true) 
         console.log('logged in successfully: ' + data) 
         this.router.navigate(['/profile']) 
        }) 

// auth_service調用此方法

Login(email, password): Observable<boolean> 
    { 
     return this.http 
        .post('/api/login', JSON.stringify({email: email, password: password}), this.Get_Headers('no_auth')) 
        .map(Handle_Response) 

     function Handle_Response(response: Response) 
     { 
      let token = response.json() && response.json().token 
      if(token) 
      { 
       this.token = token 
       localStorage.setItem('current_user', JSON.stringify({ email: email, token: token })) 
       return true 
      } 
      else 
       return false 
     } 
    } 

//然後在我的檔案組件我做這個。我嘗試過不同的超時時間。

ngOnInit(): void 
    { 
     this.global_events.change_nav_bar.emit(true) 

     setTimeout(() => this.Get_User_Data(), 10000) 
    } 
+0

代碼看起來不錯,你得到任何錯誤設置?令牌存儲在本地存儲你有沒有檢查過它? get_User_data()函數做的是尋找本地存儲? –

+0

this.Get_User_Data()正在調用我的api/profile,它使用jwt訪問路由「router.get('/ api/profile',auth,Get_User)」。當我調用this.Get_User_Data()時,我得到的錯誤是401未經授權的錯誤。你是什​​麼意思是存儲在localStorage中的令牌?我的意思是它必須是如果它適用於刷新權限? –

+0

401錯誤表示用戶未被授權,用戶在授權您未將auth令牌傳遞給該api請求時。確保你在get_user_data()方法中獲得令牌,並且你正在發送請求。否則你不會得到401錯誤。 –

回答

0

我解決了這個(沒有真正解決,但找到其他解決方案)僅通過直接從localStorage的拉動令牌,而不是在的AuthenticationService

相關問題