Angular2共享服务来观察路线防护中的解析器canActivate

时间:2017-03-06 23:26:33

标签: angular router roles guard resolver

假设我使用canActivate-Guard获得了一条路线。路径的路径只包含一个参数:xyzType。在路由的数据对象内,我为每个可能的指定了一组所需的权限:xyzType。

{
    path: ':xyzType',
    component: SuperSpecialComponent,
    canActivate: [AuthGuard],
    data: {
      permissions: {
        "type1": [
          "add:type1", "edit:type1"
        ],
        "type2": [
          "add:type2", "edit:type2"
        ]
      }
    },
    resolve: {
      permissions: PermissionsResolver
    }
  }

PermissionResolver检查:xyzType参数得到的值并返回route.data ['permissions'] [:xyzType-value]。

因此,例如,如果在浏览器中调用'/ type1',则PermissionResolver返回

["add:type1", "edit:type1"]

我是否正确假设route.data ['permissions']也匹配返回的数组?!

所以问题是在PermissionResolver完成它应该做的事情之前,AuthGuard被触发了。

我没有设法工作(在PermissionResolver和AuthGuard之间共享)哪种观察PermissionResolver'直到完成'分别观察route.data.permissions以获取新值,以便AuthGuard只运行PermissionResolver完成后。

对此有何帮助或想法? 很难找到比angular2角色和权限的超简单例子更特别的东西。

谢谢=)

0 个答案:

没有答案