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)
}
代碼看起來不錯,你得到任何錯誤設置?令牌存儲在本地存儲你有沒有檢查過它? get_User_data()函數做的是尋找本地存儲? –
this.Get_User_Data()正在調用我的api/profile,它使用jwt訪問路由「router.get('/ api/profile',auth,Get_User)」。當我調用this.Get_User_Data()時,我得到的錯誤是401未經授權的錯誤。你是什麼意思是存儲在localStorage中的令牌?我的意思是它必須是如果它適用於刷新權限? –
401錯誤表示用戶未被授權,用戶在授權您未將auth令牌傳遞給該api請求時。確保你在get_user_data()方法中獲得令牌,並且你正在發送請求。否則你不會得到401錯誤。 –