Как выполнить это перенаправление в зависимости от того, происходит ли аутентификация в приложении Angular 9? - PullRequest
0 голосов
/ 28 апреля 2020

Я работаю над приложением Angular 9, которое использует OneLogin для целей аутентификации.

В файле auth.component.ts у меня есть служба аутентификации, которую я использую в компонент аутентификации:

import { AuthService } from 'path/to/core/services/auth/auth.service';
import { AuthApiService } from 'path/to/core/core/services/auth/auth-api.service';
import { Component, OnInit } from '@angular/core';
import { authCodeFlowConfig } from 'path/to/config/onelogin-api/config-auth.component';

@Component({
    selector: 'auth',
    templateUrl: './assets/auth.component.html',
    styleUrls: ['./assets/auth.component.scss']
})

export class AuthComponent implements OnInit{
    constructor(private _authService: AuthService) {
    }

    startAuthentication() {
        this._authService.startAuthentication();
    }

    ngOnInit(): void {
        this.startAuthentication();
    }
}

В auth.service.ts у меня есть метод startAuthentication():

startAuthentication(): Observable<any> {
    const {issuer, redirectUri, clientId, responseType, scope} = authCodeFlowConfig;

    const url = `someURL`;

    this.redirectTo(url);

    return of(false);
}
redirectTo(url: string): void {
    window.location.href = url;
}

В файле app.module.ts у меня есть этот массив маршрутов:

import { AuthService } from './core/services/auth/auth.service';
// more imports

const appRoutes: Routes = [
    {
        path      : 'myroute',
        redirectTo: 'myroute'
    },
    {
        path: 'auth',
        component: AuthComponent
    }
];

Другими словами, я хочу, чтобы приложение достигло определенного URL при успешном входе в систему и в противном случае перенаправило бы на форму входа.

Что я хочу случается так: когда вход в систему успешен - другими словами, когда startAuthentication() выполняется - должно быть перенаправление на myroute.

Я пытался {path: 'auth', component: AuthComponent, startAuthentication:[AuthService]} бит, он терпит неудачу.

Что я делаю не так?

1 Ответ

2 голосов
/ 28 апреля 2020

Поскольку у меня нет дополнительной информации о вашем StartAuthentication методе, я бы сказал, что вы должны внедрить службу маршрутизатора в ваш компонент и перемещаться по ней:

import { Router } from '@angular/router';
...

constructor(
  private _authService: AuthService,
  private _router: Router) {}

startAuthentication() {
  this._authService.startAuthentication();
  this._router.navigate(['/', 'myroute']);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...