0

だから私は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)
    }
4

1 に答える 1

1

authenticationService で設定する代わりに、localStorage からトークンを直接プルするだけで、これを解決しました (実際には解決されていませんが、別の解決策を見つけました)。

于 2016-11-22T06:49:10.447 に答える