Получить текущего (зарегистрированного) пользователя на странице ASP.NET Core 3.0 .razor - PullRequest
0 голосов
/ 10 июля 2019

Я тестирую воду с помощью блейзерного серверного приложения и пытаюсь найти зарегистрированного пользователя на странице .razor.Это

UserManager.GetUserAsync(User)

работает в представлении .cshtml, но я не могу найти способ заставить его работать на странице .razor.Нет свойства "Пользователь" для доступа.Я использую IdentityUser с моей моделью ApplicationUser, которая расширяет IdentityUser.Я использую AspNetCore 3.0 Preview 6.

1 Ответ

4 голосов
/ 10 июля 2019

Если вы окружите свой код компонентом AuthorizeView, вы сможете получить доступ к объекту context, который предоставляет текущего пользователя.

<AuthorizeView>
    <Authorized>
        <h1>Hello, @context.User.Identity.Name!</h1>
        <p>You can only see this content if you're authenticated.</p>
    </Authorized>
    <NotAuthorized>
        <h1>Authentication Failure!</h1>
        <p>You're not signed in.</p>
    </NotAuthorized>
</AuthorizeView>

Если вы не хотите использовать этот подход, вы можете запросить каскадный параметр с именем authenticationStateTask, который предоставляется CascadingAuthenticationState.

@page "/"

<button @onclick="@LogUsername">Log username</button>

@code {
    [CascadingParameter]
    private Task<AuthenticationState> authenticationStateTask { get; set; }

    private async Task LogUsername()
    {
        var authState = await authenticationStateTask;
        var user = authState.User;

        if (user.Identity.IsAuthenticated)
        {
            Console.WriteLine($"{user.Identity.Name} is authenticated.");
        }
        else
        {
            Console.WriteLine("The user is NOT authenticated.");
        }
    }
}
...