项目

Blazor UI:授权

Blazor 应用程序可以使用服务端定义的相同授权系统和权限。

本文档仅适用于 Blazor UI 的授权。请参阅 服务端授权 了解如何定义权限并控制授权系统。

基础用法

ABP 与 Blazor 提供的授权基础设施100%兼容。请参阅 Blazor 安全文档 了解所有授权选项。本节仅展示一些常见场景

Authorize 特性

[Authorize] 特性可用于仅向已认证用户显示页面。

@page "/"
@attribute [Authorize]

只有登录后您才能看到此内容。

[Authorize] 特性还支持基于角色或基于策略的授权。例如,您可以检查服务端定义的权限:

@page "/"
@attribute [Authorize("MyPermission")]

只有具备必要权限时您才能看到此内容。

AuthorizeView 组件

AuthorizeView 组件可在页面/组件中使用,用于有条件地渲染部分内容:

<AuthorizeView Policy="MyPermission">
    <p>只有满足"MyPermission"策略要求时您才能看到此内容。</p>
</AuthorizeView>

IAuthorizationService 服务

可注入 IAuthorizationService 并通过编程方式检查权限:

public partial class Index
{
    protected override async Task OnInitializedAsync()
    {
        if (await AuthorizationService.IsGrantedAsync("MyPermission"))
        {
            //...
        }
    }
}

如果您的组件直接或间接继承自 AbpComponentBase,则 AuthorizationService 已被预注入并可供使用。否则,您可以自行 注入 IAuthorizationService

AuthorizeView 组件不适用的情况下,IAuthorizationService 也可在视图端使用。

IAuthorizationService 提供了一些实用的扩展方法:

  • IsGrantedAsync 对给定策略/权限简单返回 truefalse
  • CheckAsync 检查权限,如果给定策略/权限未被授予则抛出 AbpAuthorizationException。您无需处理此类异常,因为 ABP 会自动 处理错误
  • AuthorizeAsync 返回 AuthorizationResult,这是 ASP.NET Core 授权系统提供的标准方式

请参阅 Blazor 安全文档 了解所有授权选项

另请参阅

在本文档中