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对给定策略/权限简单返回true或falseCheckAsync检查权限,如果给定策略/权限未被授予则抛出AbpAuthorizationException。您无需处理此类异常,因为 ABP 会自动 处理错误AuthorizeAsync返回AuthorizationResult,这是 ASP.NET Core 授权系统提供的标准方式
请参阅 Blazor 安全文档 了解所有授权选项
另请参阅
- 授权(服务端)
- Blazor 安全(Microsoft 文档)
- ICurrentUser 服务
- 视频教程
抠丁客


