Как сохранить авторизацию при открытии другой вкладки с помощью angular-oauth2-oidc?

Я реализую функцию входа в систему в angular, используя

угловой-oauth2-oidc

и IndentityServer4 (ядро .Net). Если я открываю вкладку A и захожу в систему, я открываю другую вкладку и перехожу на свой сайт, но браузер перенаправляет на страницу входа, а я хочу, чтобы она оставалась на домашней странице. Вот мой код:

ngOnInit() {
    this.checkLogin();
    this.getLoginData();
  }

  checkLogin() {
    console.log({ TOKEN: this.oauthService.getAccessToken() })
    if (this.oauthService.getAccessToken() != null) {
      this.router.navigateByUrl('/home');
    } else {
      return;
    }
  }

  Login() {
    this.oauthService.fetchTokenUsingPasswordFlow(this.username, this.password).then((resp) => {
      return this.oauthService.loadUserProfile();
    }).then(() => {
      let claims = this.oauthService.getIdentityClaims();
      if (claims) console.log(claims);
      this.rememberMe();
      this.toastr.success("Login successful !");
      this.router.navigateByUrl('/home');
    }).catch((err) => {
      this.toastr.error(err.error.error_description)
    })
  }


  rememberMe() {
    if (this.remember_me) {
      this.cookieService.set('uSnGTX23NJKLX=', this.username);
      this.cookieService.set('pWNEAExy2HBXS=', this.password);
    } else {
      this.cookieService.deleteAll();
    }
  }

  private getLoginData() {
    this.username = this.cookieService.get('uSnGTX23NJKLX=');
    this.password = this.cookieService.get('pWNEAExy2HBXS=');
    this.remember_me = (this.username != '' || this.password != '');
  }

Есть у кого-нибудь идеи? Спасибо!


person every Bit    schedule 21.11.2018    source источник


Ответы (1)


  1. Попытайтесь сохранить зарегистрированную информацию в localStorage.
  2. Используйте службу oauth вместе с angular guards: https://github.com/katerinalev1992/Angular6Firebase/blob/master/src/app/services/auth-guard.service.ts
person Kateryna    schedule 21.11.2018