我有一个身份验证服务,它实现了Resolve接口,以返回一个从服务器检索到用户身份验证状态后解析的observable.
此相同的身份验证服务实现CanActivate接口,以阻止用户在未登录的情况下访问组件.
目前,在解析resolve函数之前触发canActivate函数,这意味着它在从服务器检索登录状态之前检查用户的登录状态.
我的问题是,如何在解析resolve之前阻止调用canActivate函数,或者是否有其他方法可以实现我想要的?
谢谢马克斯.
Jef*_*aal 19
CanActivate总是在设计解决之前运行..
因为解析器应该只在CanActivate警卫完成他们的工作(认证,清理......)之后运行.当您遵循此模式(见下文)时,通常没有理由反转或更改此顺序.
1. CanActivate(身份验证):
Promise或Observable以确保解析器等待CanActivate后卫来完成.2.解决(获取数据):
Promise或Observable以确保当解析数据是可用的组件被加载.3. constructor/OnInit(使用数据):
ActivatedRoute.snapshot.data).如果,不知何故,你真的需要等待解析器完成,只需将代码从防护装置移动到解析器.
您可以在GitHub上的这个帖子中阅读更多相关信息.
j2L*_*L4e 12
canActivate()可以返回a boolean,Promise<boolean>或Observable<boolean>.
如果返回Promise或Observable,则在解析组件之前无法导航组件true.
| 归档时间: |
|
| 查看次数: |
8807 次 |
| 最近记录: |