【问题标题】:Blazor equivalent to OnActionExecuting?Blazor 相当于 OnActionExecuting?
【发布时间】:2019-09-29 23:20:41
【问题描述】:

在我的 MVC 控制器中,我会重载 OnActionExecuting 方法来检查安全权限可访问性。在没有控制器的情况下路由到 razor 页面时,在 Blazor 服务器端是否存在与此行为等效的行为?

public override void OnActionExecuting(ActionExecutingContext context)
{
    if (!context.IsAuthorized(out string message))
        context.Result = StatusCode((int)HttpStatusCode.Unauthorized, 
message);
    base.OnActionExecuting(context);
}

【问题讨论】:

  • > “我会重载 OnActionExecuting 方法来检查安全权限”——这就是授权过滤器的用途。
  • 是否有与我可以添加到我的剃须刀页面的等效项?

标签: c# blazor blazor-server-side .net-core-3.0


【解决方案1】:

虽然我不确定这是否是解决此问题的最佳方法(我很想知道是否是),但我找到了一种解决方法,希望这也可以对其他人有所帮助

我截取了RouterFound方法如下:

@inject IUserContext User

<Router AppAssembly="typeof(Program).Assembly">
    <Found Context="routeData">
        @if (routeData.IsAuthorizedFor(User, out string message))
        {
            <RouteView RouteData="@routeData" DefaultLayout="typeof(MainLayout)" />
        }
        else
        {
            <LayoutView Layout="typeof(MainLayout)">
                <p>@message</p>
            </LayoutView>
        }
    </Found>
    <NotFound>
        <LayoutView Layout="typeof(MainLayout)">
            <p>Sorry, there's nothing at this address.</p>
        </LayoutView>
    </NotFound>
</Router>

我认为这不是最佳的原因是因为这看起来不像是 razor 文件中应该包含的代码类型。 Router 方法也不是虚拟的,因为我确实考虑过创建自己的路由器类型,继承自那个。

【讨论】:

    【解决方案2】:

    这适用于我在 Blazor .NET 5 中从基类(即 .cs 文件,而不是 .razor 文件。我没有从 .razor 文件尝试)。

    using Microsoft.AspNetCore.Components;
    
    namespace YourProjectName.Pages
    {
        public class YourRazorFileName: ComponentBase
        {
            protected override void OnInitialized()
            {
                base.OnInitialized();
               //Insert things you want to run on initialize here
            }
        }
    }
    

    其他类似方法:OnAfterRender、OnParametersSet。见https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.components.componentbase.onafterrender?view=aspnetcore-5.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多