Blazor服务器应用程序上没有大量文档,我知道它使用SignalR,但该项目不包含HomeController。所以我想知道在没有它的情况下在布拉佐尔怎么走?它只是基于页面和组件的角色/策略授权吗?
您的问题不是很具体,但blazor应用程序中的路由是由App.razor
中的Router
组件完成的。Router
将扫描给定组件,查找具有@page
指令的剃须刀组件。这些剃须刀组件是可路由的,并且能够通过RouteView
-组件显示。
App.razor:
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
</Found>
<NotFound>
<p>Sorry, there's nothing at this address.</p>
</NotFound>
</Router>
对于授权,还有另一个名为AuthorizeRouteView
的RouteView
-组件,但这需要用CascadingAuthenticationState
包装整个Route
-组件。
App.razor与auth:
<CascadingAuthenticationState>
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<AuthorizeRouteView RouteData="@routeData"
DefaultLayout="@typeof(MainLayout)" />
</Found>
<NotFound>
<LayoutView Layout="@typeof(MainLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
</CascadingAuthenticationState>
基本路由在这里的微软文档中有很好的描述。对于带有路由的auth,这里还有一篇docu文章。