2017-01-03 2 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

Roman, 기본적으로 위에서 언급 한 방법을 호출 한 다음 로그인 페이지로 리디렉션합니다. :/ – LVDev

+0

리디렉션을 수행하기 전에 세션을 무효화하십시오. –

답변

1

UserManager가 관리하는 상태를 지우려면 removeUser으로 전화하십시오. 로그 아웃을 트리거 할 때이 메시지가 필요하므로 궁금 해서요. 로그를 확인 하시겠습니까?

+0

브록, 수동으로 두 가지 작업을 모두 마쳤습니다. 그리고 signoutRedirectCallback()은 removeUser()를 호출합니다. 내가 로그를 확인하고 그것은 오류없이 removeUser를 호출합니다. 토큰이 만기되지 않았고 계속 유지됩니다. 크롬에서만 토큰이 계속 남아 있습니다. – LVDev

+0

어떤 유형의 토큰입니까? JWT 또는 참조? –

+0

JWT가 우리가 사용하고있는 것입니다. – LVDev

관련 문제