"URI не является локальным".
Чтобы решить эту проблему ...
Выполните следующие действия:
- Создайте в Страницы папки компонента RedirectToLogin со следующим кодом:
RedirectToLogin.razor
@inject NavigationManager NavigationManager
@code{
[Parameter]
public string ReturnUrl {get; set;}
protected override void OnInitialized()
{
ReturnUrl = "~/" + ReturnUrl;
NavigationManager.NavigateTo($"Identity/Account/Login?returnUrl=
{ReturnUrl}", forceLoad:true);
}
}
Откройте App.razor и добавьте следующий код в AuthorizeRouteView.NotAuthorized
<NotAuthorized>
@{
var returnUrl =
NavigationManager.ToBaseRelativePath(NavigationManager.Uri);
<RedirectToLogin ReturnUrl="@returnUrl"/>
}
</NotAuthorized>
Также добавьте NavigationManager в верхней части компонента приложения, например:
@inject NavigationManager NavigationManager
Чтобы проверить это, в верхней части страницы компонента Fetchdata (или Counter, если хотите) добавьте @attribute. директива для атрибута Authorize, например: @attribute [Authorize]
Когда пользователь, не прошедший проверку подлинности, пытается получить доступ к странице Fetchdata, выполняется свойство делегата AuthorizeRouteView.NotAuthorized, а компонент RedirectToLogin отображается с атрибутом параметра, установленным на текущий URL.
Обновление
Следующим дополнением является добавление кнопок входа и выхода в ваше приложение ...
- Создание композиции nent с именем LoginDisplay.razor в папке Shared и добавьте в него следующий код:
<AuthorizeView>
<Authorized>
<a href="Identity/Account/Manage">Hello,
@context.User.Identity.Name!</a>
<form method="post" action="Identity/Account/LogOut">
<button type="submit" class="nav-link btn btn-link">Log
out</button>
</form>
</Authorized>
<NotAuthorized>
<a href="Identity/Account/Register">Register</a>
<a href="Identity/Account/Login">Log in</a>
</NotAuthorized>
</AuthorizeView>
В компоненте MainLayout добавьте элемент LoginDisplay следующим образом:
<div class="top-row px-4 auth">
<LoginDisplay />
<a href="https://docs.microsoft.com/aspnet/"
target="_blank">About</a>
</div>
Запустите приложение и проверьте кнопку входа и выхода ...