@ baer999, это как вы можете вызвать страницу входа из Blazor для аутентификации пользователя. Он также предоставляет код для создания кнопки «Вход», «Выход из системы» и т. Д. c.
. Выполните следующие действия:
- Создайте в папке страниц компонент 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);
}
}
Добавьте атрибут Authorize на страницы, которые вы хотите авторизовать, как для Например, компоненты Counter или FetchData:
@ attribute [Authorize]
Добавьте атрибут вверху компонентов.
Замените следующее код с кодом в компоненте приложения:
App.razor
<CascadingAuthenticationState>
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<AuthorizeRouteView RouteData="@routeData"
DefaultLayout="@typeof(MainLayout)">
<NotAuthorized>
@{
var returnUrl =
NavigationManager.ToBaseRelativePath(NavigationManager.Uri);
<RedirectToLogin ReturnUrl="@returnUrl"/>
}
</NotAuthorized>
<Authorizing>
Wait...
</Authorizing>
</AuthorizeRouteView>
</Found>
<NotFound>
<LayoutView Layout="@typeof(MainLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
</CascadingAuthenticationState>
Также вставьте NavigationManager в верхней части компонента приложения, например:
@inject NavigationManager NavigationManager
Чтобы проверить это, в верхней части страницы компонента Fetchdata (или Counter, если вам нравится) добавьте директиву @attribute для атрибута Authorize, например: @attribute [Authorize]
Когда неаутентифицированный пользователь пытается получить доступ к странице Fetchdata, Authorize Свойство делегата RouteView.NotAuthorized выполняется, и компонент RedirectToLogin отображается с атрибутом параметра, установленным на текущий URL.
Следующее добавление заключается в добавлении кнопок входа и выхода в приложение ...
- Создайте компонент с именем LoginDisplay.razor в общей папке и добавьте в него следующий код:
<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>
Запустите приложение и проверьте кнопку входа и выхода ...