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

Blazor Server-Side: Role specific [Authorized] view with shared [NotAuthorized] view

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

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

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

现在我想知道,有谁知道是否可以为两个角色共享 <NotAuthorized> 区域,因为我无法向区域本身添加 Roles 属性...一般而言,<AuthorizeView> 是可能的。

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

这可能吗?

在此先致谢并致以最诚挚的问候

七叶草

您可以通过注入 SignInManager 来执行过程逻辑,而不是使用标签 - 试试这个,看看它是否适合您!

@using Microsoft.AspNetCore.Identity

@inject SignInManager<IdentityUser> SignInManager


@if (SignInManager.Context.User.IsInRole("admin"))
{
    <p>AdminHTML here</p>
} 
else if (SignInManager.Context.User.Identity.IsAuthenticated)
{
    <p>Some HTML here</p>
}
else
{
    <p>Not authorized goes here.</p>
}

可以在 Microsoft 的文档中找到更多信息 here,但是他们使用的方法在标准 Blazor 页面中对我不起作用,这就是我使用 SignInManager 的原因,此方法似乎适用于我.