Аутгард с наблюдаемой? - PullRequest
0 голосов
/ 03 сентября 2018

Хорошо, предположим, у меня есть защита. Я хочу сделать простую вещь: отправить запрос в бэкэнд, если он отправляет мне информацию о пользователе, что означает, что пользователь аутентифицирован, я хочу вернуть true. В противном случае он отправит мне сообщение об ошибке, поэтому я хочу перехватить эту ошибку и перенаправить пользователя. Как мне это сделать с помощью rxjs? Это кажется слишком сложным ... Я хочу проверить, вошел ли пользователь в систему и является ли его токен действительным. Итак, я понимаю, что мне нужно отправить запрос, но как менеджер ошибок или ответ вообще? Я также понимаю, что если в локальном хранилище токена нет, я должен вернуть false и даже не отправлять никаких запросов. Конечно, это не работает, но я вообще не знаю, как это сделать ...

// guard
return this.authService.checkUserAuthenticated();
// service
checkUserAuthenticated() {
    this.http.post(`${this.domainName}api/auth/userinfo`, null)
      .subscribe(
      (data) => true,
    (err) => false
      );
  }

1 Ответ

0 голосов
/ 03 сентября 2018

вы можете сделать вызов API для серверной части, используя authguard, затем вернуть true или false

export class AuthGuard implements CanActivate {
    constructor(private router: Router, private service:Service) {}

    canActivate(
        next: ActivatedRouteSnapshot,
        state: RouterStateSnapshot): boolean {
        this.service.Authenticate().subscribe(
             (data: any)=>{ any condition to check and then return true},
             (error: any)=>{ return false;});

    }
}

и добавьте метод аутентификации authguard в файл маршрутизации.

...