首页 > 解决方案 > 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 进行更多控制,那就太好了。

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

标签: angularangular-router

解决方案


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

{
  path: '',
  component: WrapperComponent
}

WrapperComponent可以显示基于auth的相关视图。

包装组件

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

<ng-template #orgAdmin>
  <org-admin></org-admin>
</ng-template>

推荐阅读