簡體   English   中英

localStorage中的JWT僅在刷新頁面后才能工作

[英]JWT in localStorage only works after refreshing the page

因此,我正在研究angular2應用程序,並嘗試在登錄后生成JWT,以便可以獲取用戶的個人資料信息。 我可以成功登錄,這就是我生成令牌的時間。 登錄后,我將用戶引導到個人資料頁面,這就是我調用api來獲取用戶信息的地方。 所有這些僅在我登錄並刷新到頁面后才起作用。

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)
    }

我通過直接從localStorage提取令牌而不是在authenticationService中進行設置來解決了此問題(並沒有真正解決,但找到了另一個解決方案)

暫無
暫無

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

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