Auth0 перенаправляет обратно на URL после логина angular2

После входа в систему auth0 перенаправляет меня обратно на URL обратного вызова на angular2. Как я могу заставить его идти по пути, который я дал к маршрутизации, не перенаправляя на URL обратного вызова.

1 ответ

Я работал над этой же проблемой.. Кажется, у вас есть несколько вариантов.

а) Использовать всплывающий режим

Это легко реализовать, но Auth0 рекомендует не использовать это из-за несоответствий браузера. (а именно некоторые IE и Chrome/Firefox на iOS)

Это так же просто, как добавить флаг к вашему объекту параметров блокировки

var lockOptions = {
  auth: {
    redirect: false
  }
}

Документы всплывающего режима

б) Сохранить состояние в LocalStorage

Auth0 предлагает сохранить состояние в LocalStorage, если вы хотите разрешить пользователям возобновить работу с того места, где они остановились.

Так что, непосредственно перед запуском lock.show()Вы можете сохранить текущий URL/ путь / состояние / и т.д. в локальном хранилище. В моем случае я использую authGuard.

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
    if (this.authService.isLoggedIn) {
        return Promise.resolve(true);
    }

    // Store the attempted URL for redirecting after auth
    localStorage.setItem('redirectUrl', state.url);

    // Navigate to the login page
    this.router.navigate([`${environment.loggedOutRoute}`]);

    return Promise.resolve(false);
}

Затем внутри вашего аутентификационного обратного вызова:

// On authentication
this.lock.on('authenticated', (authResult: any) => {
    // Save the token in LS
    localStorage.setItem('token', authResult.idToken);

    // Hide the login modal
    this.lock.hide();

    // Redirect the user
    const redirectUrl: string = localStorage.getItem('redirectUrl');
    if (redirectUrl) {
        this.router.navigate([redirectUrl]);
    } else {
        this.router.navigate(['/overview']);
    }
});
Другие вопросы по тегам