Blazor服务器端:具有共享[NotAuthorized]视图的特定于角色的[Authorized]视图

问题描述

我在blazor服务器端应用程序中偶然发现了一个小问题,该应用程序具有以下基础:

  • 我已经使用<AuthorizeView>开发了一个用于访问客户的应用程序。
  • 着陆页和所有内容都停放在<NotAuthorized>区域内
  • (通过消费卡)登录后,客户已获得基于索赔的授权,并且可以访问<Authorized>区域

我想到目前为止一切照旧...

现在,我必须更改我的应用程序,以允许操作员也可以分别访问具有不同功能的应用程序,所以我执行了以下操作:

  • 我在我的ClaimTypes.Role添加一个ClaimsIdentity声明,其中包含针对客户的角色customer和针对运营商的角色operator

  • 我已将Roles属性添加到我的<AuthorizeView>

现在我想知道,是否有人可以共享两个角色的<NotAuthorized>区域,因为我无法向该区域本身添加Roles属性...通常对于<AuthorizeView>来说是可能的。

问题是,我只想根据已认证用户<Authorized>声明调整Role区域,而无需将我的<NotAuthorized>代码复制到另一个<AuthorizeView> >

这可能吗?

预先感谢和问候

E科

解决方法

除了使用标签之外,您还可以通过注入SignInManager来执行程序逻辑-试试看,看看它是否对您有用!

if(event.target.className===<className>) {
     //exit the function
    return
} else {
    //do the styling
}

可以在Microsoft文档上here找到更多信息,但是在标准的Blazor页面上,他们使用的方法对我不起作用,这就是为什么我使用SignInManager的原因,这种方法对我来说似乎很好。