2017-01-03 9 views
1

Вот какой-то фон, я использую неявный поток, а мой токен - JWT. Чтобы выйти из системы, я использую метод вызова signoutRedirectCallback.Oidc-клиент с IdentityServer3 - Angular2, как правильно выйти и войти в систему

Я хочу иметь возможность правильно выйти из системы. Чтобы я мог войти в систему как другой пользователь. При этом у меня все еще есть токен от последнего пользователя? Есть ли способ полностью зарегистрировать пользователя, чтобы он не имел токен последнего пользователя? По какой-то причине токен по-прежнему сохраняется. Кажется, что единственный способ действительно выйти из системы - это когда страница браузера закрыта и файл cookie на идентификационном сервере3 удаляется/удаляется?

Это также может ответить на мою другую проблему. Если пользователь нажимает на гиперссылку на главной странице сетки и открывает новую вкладку (например, страница с подробной информацией), если пользователь выходит на новую вкладку (страница сведений), основная страница сетки (старая вкладка) все еще регистрируется в? Опять же, это та же проблема, когда я не полностью вышла из системы.

Может ли кто-нибудь дать мне несколько советов о том, как правильно выйти из системы, чтобы удалить файл cookie на идентификационном сервере3? Так что это чистый список. Маркер все еще сохраняется. Спасибо.

//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() вызывает фактический метод РСИН-клиент signoutRedirectCallback(). Это работает и перенаправляется. Но токен по-прежнему сохраняется, если я не закрываю страницу.

ОБНОВЛЕНИЕ: Моя группа по тестированию сказала мне, что эта проблема специально связана с Chrome.

+0

по какой-то причине вы не сделали это правильно, невозможно дать вам какое-либо предложение, не заглядывая в исходный код. –

+0

Roman, я в основном называю метод, упомянутый выше, а затем перенаправляется на страницу входа. :/ – LVDev

+0

перед выполнением переадресации недействительности сеанса –

ответ

1

Чтобы очистить состояние, управляемое UserManager, позвоните по номеру removeUser. Это нужно вызвать для вас, когда вы запускаете выключение, поэтому мне любопытно, почему это не так. Проверить журналы?

+0

Брок, я сделал оба, вручную и разрешил вызов signedRedirectCallback() removeUser(). Я проверил журналы, и он вызывает removeUser без ошибок. Токен не истек, и он все еще сохраняется. Это только в Chrome, что токен по-прежнему сохраняется. – LVDev

+0

Какой тип токена? JWT или ссылка? –

+0

JWT - это то, что мы используем. – LVDev