Сохранить попытку параметра URL после перенаправления - PullRequest
0 голосов
/ 10 декабря 2018

В моем Angular-проекте я только что реализовал Amazon Cognito Hosted UI для обработки моего входа следующим образом:

Amazon Cognito Hosted UI

Теперь, когда мои пользователи нажимаютна моей кнопке входа они перенаправляются на другой URL-адрес, например https://[domain].amazoncognito.com/login?redirect_uri=http://localhost:4200/&response_type=code&client_id=[some id], чтобы выполнить вход, и в случае успеха перенаправляются обратно на мой угловой URL-адрес.

До реализации этого у меня была объединена простая страница входа.с помощью authguard для защиты моих маршрутов, который сохранял предпринятый URL-адрес и перенаправлялся обратно после входа в систему .И поскольку я работал только на Angular, все работало гладко.

Теперь, из-за функционирования размещенного пользовательского интерфейса Cognito, попытка параметра URL теряется, когда мой пользователь перенаправляется на размещенный пользовательский интерфейс.

Мой вопрос: Есть ли способ сохранить мои попытки URL-параметра даже с этим перенаправлением?

Дополнительная информация

Не знаюиметь компонент входа в систему, потому что он обрабатывается Cognito Hosted UI.

Это отрывок компонента, который вызывает мой Cognito Hosted UI:

navbar.component.ts

@Component({
  selector: 'app-navbar',
  templateUrl: './navbar.component.html',
  styleUrls: ['./navbar.component.scss']
})
export class NavbarComponent implements OnDestroy, OnInit {

  [...]

  constructor(
    @Inject(LOCALE_ID) protected localeId: string,
    private router: Router,
    private authService: AuthService,
    private usersService: UsersService
  ) { }

  [...]

  signIn() {
    this.authService.signIn();
  }

}

navbar.component.html

<div class="navbar-item" *appShowIfSignedIn="false">
  <a class="button" (click)="signIn()">Sign in</a>
</div>

Вот выдержка из моего AuthService:

auth.service.ts

@Injectable({ providedIn: 'root' })
export class AuthService {

  private url = 'https://' + '[domain].auth.eu-central-1.amazoncognito.com' + '/login?redirect_uri=' + 'http://localhost:4200/' + '&response_type=' + 'code' + '&client_id=' + '[some id]';

  constructor(
    private ngZone: NgZone,
    private authStore: AuthStore
  ) {
    Hub.listen('auth', this, 'AuthCodeListener');
  }

  onHubCapsule(capsule: any) {
    const { channel, payload } = capsule;
    if (channel === 'auth' && payload.event === 'signIn') {
      this.ngZone.run(() => {
        this.currentAuthenticatedUser().subscribe(
          (user: any) => {
            const isSignedIn = true;
            const accessToken = user.signInUserSession.accessToken.jwtToken;
            const sub = user.signInUserSession.accessToken.payload['sub'];
            this.authStore.update({
              signedIn: isSignedIn,
              accessToken: accessToken,
              sub: sub
            });
          }
        );
      });
    }
  }

  signIn() {
    window.location.assign(this.url);
  }

Спасибо за помощь

1 Ответ

0 голосов
/ 12 мая 2019

Я нашел способ сделать это, просто сохранив мой попытавшийся параметр URL-адреса в моем локальном хранилище.

Таким образом, я могу получить свой попытавшийся параметр URL-адреса даже после перенаправления обратно из размещенного пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...