Angular UrlMatcher注入身份验证服务

问题描述 投票:1回答:1

我们有一个具有超级管理员和组织管理员级别的控制台。当您以超级管理员身份登录时,我希望路由/成为超级管理员模块。

[super admin]
   + [Organisations]
   + [Users]
   + etc..

进入“组织”时将获得/organisations/list/organisations/Apple/posts之类的路径。

当您以组织管理员身份登录时,根目录/应该加载组织模块。

[org admin]
   + [Posts]
   + [Users]
   + [Events]
   + etc.

我遇到的问题是,我想使用URLMatcher允许根据授权在同一路径上加载2个模块。为此,我必须能够将Auth服务注入may URLMatcher函数。

似乎在评估路由时,首先处理了UrlMatcher。使用解析器无济于事,因为那以后会发生。我唯一能做的是访问LocalStorage并对JWT进行解码以获取授权信息,但是对我来说这似乎很麻烦。

目前,我唯一的解决方案是为超级管理员提供其自己的路径/admin/,为组织管理员提供根目录/。并非世界末日,但能够使用UrlMatcher进行更多控制将是个不错的选择。

任何建议如何解决这个问题?

angular angular-router
1个回答
0
投票

我的直接想法是创建一个包装路径;

{
  path: '',
  component: WrapperComponent
}

[WrapperComponent可以显示基于身份验证的相关视图。

WrapperComponent

<super-admin *ngIf="role == 'superAdmin'; else orgAdmin"></super-admin>

<ng-template #orgAdmin>
  <org-admin></org-admin>
</ng-template>
© www.soinside.com 2019 - 2024. All rights reserved.