我们正在开发一个不使用内置路由的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>
如果有人可以指出我要去哪里,那我将不胜感激。