无需路由的Blazor授权

时间:2020-09-14 09:55:31

标签: blazor

我们正在开发一个不使用内置路由的Blazor应用程序(我们已经实现了自己的路由来满足应用程序的要求)。我们可以使用面向布局的代码添加授权,但是在查找没有路由的示例代码时遇到了麻烦。

我们可以授权使用

<CascadingAuthenticationState>
<Router AppAssembly="@typeof(Discovery).Assembly" AdditionalAssemblies="@GetAssemblies()">
    <Found Context="routeData">
        <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
            <NotAuthorized>
                @{
                    var returnUrl = NavigationManager.ToBaseRelativePath(NavigationManager.Uri);
                    NavigationManager.NavigateTo($"login?redirectUri={returnUrl}", forceLoad: true);
                }
            </NotAuthorized>
            <Authorizing>
                Wait...
            </Authorizing>
        </AuthorizeRouteView>
    </Found>
    <NotFound>
        <LayoutView Layout="@typeof(MainLayout)">
            <p>Sorry, there's nothing at this address.</p>
        </LayoutView>
    </NotFound>
</Router>

但是,当我们删除路由并尝试仅使用固定组件替换时,auth服务会陷入重定向循环中。

<CascadingAuthenticationState>
    <AuthorizeView>
        <Authorized>
            <MyComponent></MyComponent>
        </Authorized>
        <NotAuthorized>
            @{
                var returnUrl = NavigationManager.ToBaseRelativePath(NavigationManager.Uri);
                NavigationManager.NavigateTo($"login?redirectUri={returnUrl}", forceLoad: true);
            }
        </NotAuthorized>
        <Authorizing>
            Wait...
        </Authorizing>
    </AuthorizeView>
</CascadingAuthenticationState>

如果有人可以指出我要去哪里,那我将不胜感激。

0 个答案:

没有答案