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



好吧,假设我有身份验证保护。 我只想做一件简单的事情:将请求发送到后端,如果它向我发送用户信息,这意味着用户已通过身份验证,我想返回 true。否则它会向我发送错误,所以我想捕获该错误并重定向用户。 如何使用 rxjs 执行此操作?似乎过于复杂了... 我想做的是检查用户是否已登录以及他的令牌是否有效。所以我明白我需要发送请求,但如何管理错误或响应呢?我也明白,如果本地存储中没有令牌,我应该返回 false,甚至不应该发送任何请求。 当然这行不通,但我根本不知道该怎么做......

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

您可以使用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;});
}
}

并将身份验证方法添加到路由文件。

最新更新