使用 Blazor 模式和身份验证状态

Using Blazor Modal and Authentication State

我正在尝试使用 Blazored.Modal with AuthenticationState

我在 App.Razor 文件中找不到任何说明如何组合这两个 attributes/keys 的文档。

下面是我目前的 App.Razor:

 <CascadingAuthenticationState>
    <Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="@lazyLoadedAssemblies" OnNavigateAsync="@OnNavigateAsync">
        <Found Context="routeData">
                <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
                <NotAuthorized>
                        @if (!context.User.Identity.IsAuthenticated)
.
.
.
</CascadingAuthenticationState>

我需要在某处插入 <CascadingBlazoredModal> 但我不知道。我试过在下面添加它,但这似乎创建了页面的两个渲染。我尝试用 CascadingBlazoredModal 包装上面的代码,我尝试将 CascadingBlazoredModal 放在 AuthenticationState 中。

我看到的唯一文档是 CascadingValues/Params,但这不是我要找的。

任何帮助将不胜感激!

谢谢!

我没有对此进行测试,但从文档来看这应该有效:

<CascadingAuthenticationState>
  <CascadingBlazoredModal>
    <Router AppAssembly="typeof(Program).Assembly">
        ...
    </Router>
 </CascadingBlazoredModal>
</CascadingAuthenticationState>

您应该能够在您的模态托管表单中获取级联值。

[CascadingParameter] public Task<AuthenticationState> AuthTask { get; set; }

我成功了!不确定这是否是最佳选择,但是...

我不得不将 CascadingBlazoredModal 包裹在 Authenticationstate... 并在 Found...

中添加身份验证状态

如果我不将整个 Router 包含在 AuthenticationState 中,我将无法访问整个应用程序,而只能访问我通过(叹气)进行身份验证的页面..

<CascadingBlazoredModal> 
    <CascadingAuthenticationState>
        <Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="@lazyLoadedAssemblies" OnNavigateAsync="@OnNavigateAsync">
            <Found Context="routeData">
                <CascadingAuthenticationState>
                    <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
                </CascadingAuthenticationState>
            </Found>
.
.
.