【问题标题】:Blazor default role providerBlazor 默认角色提供程序
【发布时间】:2020-02-26 19:42:40
【问题描述】:

我已经在 .NET Core 3.1 中设置了一个 Blazor 应用程序,并且我正在实现身份验证/授权,但很明显我对默认身份验证的工作原理并没有很好的了解。

我设置了一个“AuthorizeView”标签如下,完全期望它会失败:

<AuthorizeView Context="auth" Roles="Admin">
<Authorized>
Content
 </Authorized>
    <NotAuthorized>
        You do not have access to this page.
    </NotAuthorized>
</AuthorizeView>

但它工作正常。尽管我没有设置任何授权,但我仍能看到“内容”部分。我假设这默认为 Windows 身份验证(这是我在 Blazor 应用程序中使用的),但我没有指定在任何地方使用 AD 授权。

谁能指出我要去哪里,或者帮助我了解默认情况下它是如何工作的,以及它从哪里拉出这个“管理员”角色?

【问题讨论】:

    标签: asp.net authorization blazor


    【解决方案1】:

    您可以使用授权来控制和限制对资源的访问。您可以根据用户的角色、声明和授权策略来控制访问。

    使用上面的 AuthorizeView 并将 Roles 属性设置为“Admin”,您告诉 Blazor 如果用户属于 Admin 角色,则他有权访问 Authorized 元素中的内容。

    我猜您在创建应用时已将 Blazor 应用设置为通过选择 Windows 身份验证来对访问您的应用的用户进行身份验证,对吧?

    当您尝试访问您的应用时,系统会要求您提供从 IIS(快速)传递到您的应用的凭据...

    粗略地说,声明原则(或 Windows 原则)对象由 Blazor 创建并作为 AuthenticationState 对象传递给名为 ServerAuthenticationStateProvider 的对象。该对象,即 AuthenticationState 对象也提供给 AuthorizeView,其基类 AuthorizeViewCore 包含调用 IAuthorizationService 的逻辑,将声明原则传递给它。现在授权服务检查 Claims Principle 对象,它有什么声明,它有什么角色,当然它会查找值为“Admin”的角色声明,如果找到,则返回 true,并在管道的末尾行决定允许您访问受限制的内容。

    从哪里拉出这个“管理员”角色

    如果您有一个 Windows AD,或者来自 Windows 用户帐户等。请记住,您告诉向导您要使用 Windows 身份验证(这是我的假设,否则我所说的一切都可能是错误的)。

    你最好去看看文档,熟悉一下 AuthenticationStateProvider、ServiceAuthenticationStateProvider 等服务。

    【讨论】:

      猜你喜欢
      • 2016-04-23
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 2013-05-27
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      相关资源
      最近更新 更多