【发布时间】:2019-08-16 06:24:18
【问题描述】:
我真的是角的菜鸟。 我编写了一个保护服务,以便只有授权(登录)用户才能访问特定组件。 我使用 asp.net 作为后端,我在服务器端有一个 api 来返回授权状态,方法是异步的。 问题是有时 API 响应在调用 canActivate 方法后到达,因此尽管用户已获得授权,但该方法返回 false。
@Injectable()
export class AuthenticationGuardService implements CanActivate {
isSignedIn: boolean = false;
result: Object;
constructor(private router: Router,private http: HttpClient, @Inject('BASE_URL') private url: string) {
this.http.get(this.url + 'api/Authentication/UserInfo').subscribe(
result => {
if (result != null) {
this.isSignedIn = true;
}
}
)
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
if (!this.isSignedIn) {
this.router.navigate(['sign-in']);
}
return this.isSignedIn;
}
}
public async Task<IActionResult> UserInfo()
{
var user = await userManager.GetUserAsync(HttpContext.User);
if (user == null)
{
return null;
}
return Json(new
{
email = user.Email,
name = user.FirstName,
family = user.LastName
});
}
【问题讨论】:
标签: c# asp.net angular api authorization