2017-01-03 13 views
1

ここで背景をいくつか紹介します。私は暗黙的なフローを使用していて、私のトークンはJWTです。ログアウトするには、signoutRedirectCallbackというメソッド呼び出しを使用しています。IdentityServer3を使用したOidc-client - Angular2、ログアウトとログインの方法

私は適切にログアウトすることができます。だから私は別のユーザーとしてログインすることができます。そのとき、私はまだ最後のユーザーからのトークンを持っていますか?最後のユーザーのトークンを持たないようにユーザーを完全にログアウトする方法はありますか?何らかの理由でトークンがまだ存続しています。本当にログアウトする唯一の方法は、ブラウザのページが閉じられ、identityserver3のクッキーが削除/削除される場合です。

これは私の他の問題にも答えるかもしれません。ユーザがメイングリッドページ上のハイパーリンクをクリックして新しいタブ(詳細ページなど)を開くと、ユーザが新しいタブ(詳細ページ)でログアウトすると、メイングリッドページ(古いタブ)はまだ記録されますに?繰り返しますが、私が完全にログアウトしていないのと同じ問題です。

誰でも私がidentityserver3のクッキーを削除するために正しくログアウトする方法についていくつかのガイダンスを教えてくれますか?それはきれいなスレートです。トークンはまだ存続します。ありがとうございました。

//Here is the code. In my main component I have a menuclick event and this works: 
public MenuClick(event, item) 
{ 
    if (item === "signOut") 
    { 
     this.signOut(); 
    } 
} 

public signOut() 
{ 
    this._LoginService.logOut(); 
} 

//Here is the LoginService that calls the oidc-client method: 
public logOutCall(): Observable<boolean> 
{ 
    return Observable.fromPromise(new Promise<boolean> (
     resolve => 
     { 
      this._oidcService.logOut(); 
      resolve(true); 
     } 
    )); 
} 

this._oidcService.logOut()は、実際のoidcクライアント法signoutRedirectCallback()を呼び出します。これは動作し、リダイレクトされます。しかし、ページを閉じるまで、トークンはまだ残っています。

更新:私のテストチームは、この問題は特にChromeの問題だと言いました。

+0

あなたはそれを正しくしなかったため、ソースコードを調べなくてもあなたに何か提案をすることはできません。 –

+0

ローマン、私は基本的に上記のメソッドを呼び出して、ログインページにリダイレクトします。 :/ – LVDev

+0

リダイレクトを行う前にセッションを無効にします –

答えて

1

UserManagerで管理されている状態をクリアするには、removeUserを呼び出します。サインアウトをトリガーするときにこれを呼び出す必要があるので、なぜそうでないのか不思議です。ログを確認しますか?

+0

Brock、私は両方を手動で行い、signoutRedirectCallback()がremoveUser()を呼び出せるようにしました。私はログをチェックし、エラーなしでremoveUserを呼び出します。トークンは期限切れではなく、引き続き存続します。これはクロークだけでトークンは引き続き存在します。 – LVDev

+0

どのようなタイプのトークンですか? JWTまたは参照? –

+0

私たちはJWTを使用しています。 – LVDev

関連する問題