Blazor 的 AuthorizeRouteView 中定义的属性“context”在哪里?

问题描述 投票:0回答:2

我在下面有这个 AuthorizeRouteView 部分,它让我困惑的是“context”变量(第 3 行)的定义方式和位置。我查看了 dotnetcore source code 无济于事。任何帮助将不胜感激!

<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
    <NotAuthorized>
        @if (!context.User.Identity!.IsAuthenticated)
        {
            @*<RedirectToLogin />*@
        }
        else
        {
            <p>You are not authorized to access this resource.</p>
        }
    </NotAuthorized>
</AuthorizeRouteView>
c# blazor webassembly blazor-webassembly
2个回答
0
投票

@context
是一个
AuthencationState
,在 .razor 组件中使用它的一种方法是通过 级联参数

您可以在顶级 App.razor 组件中查找

<CascadingAuthenticationState>
标签。


0
投票

经过一些简短的测试,我找到了

@context
的来源。
@context
似乎是 Blazor 在使用类型参数定义渲染片段(即
ChildContent
)时提供的参数的特殊名称,例如
RenderFragment<string>
。该
<string>
类型参数将成为
@context
变量的类型。考虑这段代码:

@* ExampleComponent.razor *@

@ChildContent?.Invoke("This is our example string")

@code {
    [Parameter] public RenderFragment<string>? ChildContent { get; set; }
}
@* Home.razor *@
@page "/"

<ExampleComponent>
    The provided string is: @context @* This becomes "The provided string is: This is our example string" *@
</ExampleComponent>

AuthorizationRouteView
中,上下文参数可能来自

[Parameter]
public RenderFragment<AuthenticationState>? NotAuthorized { get; set; }
© www.soinside.com 2019 - 2024. All rights reserved.