简体   繁体   中英

How does Blazor Server route

There isnt a ton of documentation on the Blazor server app, and I know it uses SignalR, but the project does not contain a HomeController. So I am wondering how is routing down in blazor without it? Is it just base on Role/Policy authorization for pages and components?

Your question is not very specific, but the routing in a blazor app is done by Router component in the App.razor . The Router will scan the given Assembly for razor-components that have the @page directive. These razor-components are routable and will be able to get displayed by the RouteView -component.

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>

For authorization there is another RouteView -component called AuthorizeRouteView , but this requires that you wrap the whole Route -component with a CascadingAuthenticationState .

App.razor with 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>

Basic routing is pretty well described in this Microsoft docu here . For auth with routing there is also a docu article here .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM