angular - Angular UrlMatcher 注入身份验证服务
问题描述
我们有一个超级管理员和组织管理员级别的控制台。当您以超级管理员身份登录时,我希望路由/
进入超级管理员模块。
[super admin]
+ [Organisations]
+ [Users]
+ etc..
/organisations/list
当“进入”一个组织时,类似并且/organisations/Apple/posts
将会实现的路线。
当您以组织管理员身份登录时,根/
应加载组织模块。
[org admin]
+ [Posts]
+ [Users]
+ [Events]
+ etc.
我遇到的问题是我想使用 URLMatcher 来允许在同一路径上加载 2 个模块,基于授权。为此,我必须能够将 Auth 服务注入到 URLMatcher 函数中。
评估路由时,似乎首先处理 UrlMatcher。使用解析器无济于事,因为那会发生在之后。我唯一能做的就是访问 LocalStorage 并解码 JWT 以获取授权信息,但这对我来说似乎很棘手。
目前,我唯一的解决方案是为超级管理员提供自己的路径/admin/
,并为组织管理员提供 root /
。不是世界末日,但如果能够使用 UrlMatcher 进行更多控制,那就太好了。
任何建议如何解决这个问题?
解决方案
我的直接想法是创建一个包装器路线;
{
path: '',
component: WrapperComponent
}
WrapperComponent
可以显示基于auth的相关视图。
包装组件
<super-admin *ngIf="role == 'superAdmin'; else orgAdmin"></super-admin>
<ng-template #orgAdmin>
<org-admin></org-admin>
</ng-template>
推荐阅读
- c# - 需要方法签名说明
- c++ - 如何将引号(“”)放入引号中?
- java - Spring Hibernate 模式更新不适用于数据库名称中的减号
- azure - 如何在逻辑应用连接无效时收到警报
- c - Raspberry Pi3 上的裸机音频输出在 AARCH64 asm 中工作,但不是 C 版本
- angular - 等待 2 种方法完成 Angular 6
- ms-access - 从差异表单加载事件代码访问复选框值(真/假)
- java - 这是在 pom.xml 中定义 Junit 版本的正确方法吗?
- c# - 使用属性抑制 Coverity 中的消息?
- .net - Apache Ignite .Net 在会话中存储 ComplexType