Доброго времени суток.
Начал изучать blazor (SERVER SIDE(!)) и столкнулся с не понимаем и невозможностью найти ответы на свои вопросы в гугле.
1. Как сделать так, чтобы при заходе на сайт сразу перенаправляло на страницу авторизации, т.е. все страницы сайты были доступны только авторизованному пользователю;
2. Можно ли перенести страницы в библиотеки? Попытался перенести страницу авторизации в отдельную библиотеку в папку Pages, но приложение упорно не видит эту страницу. Выдает только "Sorry, there's nothing at this address.";
Возможно, частичный ответ на первый вопрос у меня есть из гугла, но я не уверен, что он правильный, прикладываю:
Добавил атрибут авторизации в _Imports.razor:
@attribute [Authorize]
В App.razor поменял структуру на :
<CascadingAuthenticationState>
<Router AppAssembly="@typeof(Program).Assembly" PreferExactMatches="@true">
<Found Context="routeData">
<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
<NotAuthorized>
<RedirectToLogin/>
</NotAuthorized>
</AuthorizeRouteView>
</Found>
<NotFound>
<LayoutView Layout="@typeof(MainLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
</CascadingAuthenticationState>
где RedirectToLogin - компонент razor, лежащий отдельно в другой библиотеке (он работает и всё прекрасно перенаправляет, но страницу /login он не видит):
@inject NavigationManager navManager
@code {
protected override void OnInitialized()
{
navManager.NavigateTo("login");
}
}
Где страница /login (находится в другой библиотеке по пути: MySite.SecondLib/Pages/Login.razor):
@page "/login"
<h1>LOGIN PAGE</h1>
Буду рад любым ответам. Спасибо.