具有可观察性的身份验证防护?

时间:2018-09-03 10:55:52

标签: angular6 rxjs6

好的,假设我有身份验证防护。 我只想做一件简单的事情:向后端发送请求,以防它向我发送用户信息(这意味着用户已通过身份验证),我想返回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 :(得分:0)

您可以使用authguard对后端进行api调用,然后返回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身份验证方法。