Oidc-клиент Angular2 не удаляет файлы cookie для приложения mvc при выходе из приложения angular2 - PullRequest
0 голосов
/ 22 мая 2018

У меня есть сервер авторизации, который в настоящее время используется моим приложением angular2 и веб-приложением mvc.

Я реализовал авторизацию в приложении angular2 с использованием пакета javascript oidc-client.Все работает нормально, кроме функции выхода из системы.

public logoff(): void {
    this.customAuthService.startSignoutMainWindow();
}

startSignoutMainWindow() {
    this.manager.getUser().then(user => {
        return this.manager.signoutRedirect({ id_token_hint: user.id_token }).then(resp => {
            console.log('signed out', resp);
            setTimeout(5000, () => {
                console.log('testing to see if fired...');
            });
        }).catch(function (err) {
            console.log(err);
        });
    });
};

Это код, который я использую для выхода из моего приложения angular2, которое использует oidc-клиент для реализации авторизации.

Но этоне выходить из моего другого веб-приложения asp.net mvc.

Но обратная работа работает нормально, т.е. если я выхожу из своего веб-приложения mvc, мое угловое приложение перенаправляет на сервер авторизации для входа в систему.

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

Заранее спасибо.

1 Ответ

0 голосов
/ 23 мая 2018
  1. Инициировать выход из системы:

    let userManager = new Oidc.UserManager(oidcSettings);
    public startLogout(): Promise<any>
            {
                return this.userManager.signoutRedirect();
            }
    
  2. полный выход из системы

     public completeLogout(url?: string): Promise<any>{
    
        return this.userManager.signoutRedirectCallback(url)
            .then((user: OidcClientUser) =>
            {                  
                // This will clear the OpenID access tokens that is stored in the session
                return this.userManager.clearStaleState();
           });                 
    }
    

При выходе из системы Вам необходимо очиститьsession и clientDeeplinks из браузера примерно так:

  public clear(ClientDeepLink?: string): void
        {
            if ((key) && (key.trim().length > 0))
            {
                this.$window.localStorage.removeItem(key);
            }
            else
            {
                this.$window.localStorage.clear();
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...