Хотя я не уверен, что это лучший способ решить эту проблему (я хотел бы знать, если это так), я нашел обходной путь и, надеюсь, это может помочь кому-то еще
Iперехватил Found
метод Router
следующим образом:
@inject IUserContext User
<Router AppAssembly="typeof(Program).Assembly">
<Found Context="routeData">
@if (routeData.IsAuthorizedFor(User, out string message))
{
<RouteView RouteData="@routeData" DefaultLayout="typeof(MainLayout)" />
}
else
{
<LayoutView Layout="typeof(MainLayout)">
<p>@message</p>
</LayoutView>
}
</Found>
<NotFound>
<LayoutView Layout="typeof(MainLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
Причина, по которой я не считаю это оптимальным, заключается в том, что это не похоже на код, который должен идти вбритвенный файл. Методы Router
также не были виртуальными, потому что я действительно думал о создании собственного типа маршрутизатора, унаследованного от этого.