首页 > 解决方案 > 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 };
    }
}

}

标签: c#razorauthorizationblazorblazor-boilerplate

解决方案


推荐阅读