使用 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>
.
.
.
我正在尝试使用 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>
.
.
.