c# - Blazor AuthorizeView:如何使用自定义授权筛选器
问题描述
我正在使用 Blazor Boilerplate 中的代码:( BlazorBoilerPlate GitHub )
@using Microsoft.AspNetCore.Components
@inject NavigationManager navigationManager
@inject AuthenticationStateProvider authStateProvider
<AuthorizeView Context="AuthorizeContext">
<Authorized>
<MatTooltip Tooltip="Logout">
<MatIconButton Icon="exit_to_app" RefBack="@context" OnClick="LogoutClick"></MatIconButton>
</MatTooltip>
</Authorized>
<NotAuthorized>
<MatTooltip Tooltip="Login">
<MatIconButton Icon="account_box" RefBack="@context" Link="/account/login"></MatIconButton>
</MatTooltip>
</NotAuthorized>
@code {
async Task LogoutClick()
{
await ((IdentityAuthenticationStateProvider)authStateProvider).Logout();
navigationManager.NavigateTo("/account/login");
}
}
“AuthorizeContext”从何而来?依赖注入?如何在此处使用我自己的自定义授权过滤器。
只是寻找任何人都知道的关于这个特定论点的任何猜测或信息。
这是我的自定义 AuthorizationFilter,我不知道如何在 blazor razor 文件中使用它。
namespace BlazorBoilerplate.Shared.AuthorizationDefinitions
{公共类OfficeAuthorize:IAuthorizationFilter {私有只读字符串_scenario;
public OfficeAuthorize(string scenario)
{
_scenario = scenario;
}
public void OnAuthorization(AuthorizationFilterContext context)
{
//context.HttpContext.Request.Query
//custom validation rule
if (_scenario == "OfficeAssignment")
{
context.Result = new ForbidResult();
}
}
}
public class OfficeAuthorizeAttribute : TypeFilterAttribute
{
public OfficeAuthorizeAttribute(int input) : base(typeof(OfficeAuthorize))
{
Arguments = new object[] { input };
}
}
}
解决方案
推荐阅读
- jenkins - 将 Jenkins 从站安装为服务“KeyUsage 不允许数字签名”时出错
- ios - iOS UITesting 元素出现几秒钟
- mysql - 如何通过 mysql 使用 group 进行嵌套选择
- python - Python - For 循环数百万行
- python - Pandas 将小时日期 excel 表重新排列为日期时间数据框
- excel - 如何在 2 个不同选项卡上的一个 Excel 中通过 SSRS 报告导出摘要和详细信息钻取
- github - 避免在 git pull 中获取少数版本文件的更新
- angular - AgGrid 更新到 v19,我做错了什么?
- ios - 如何将 SDWebImage 转换为 UIImage?
- python - 如何正确使用来自 lxml 的 xmlfile api