Get current (logged) user in ASP.NET Core 3.0 .razor page

后端 未结 2 978
后悔当初
后悔当初 2021-01-06 09:44

I\'m testing the waters with a blazer server-side app and trying to get the logged user in a .razor page. This

UserManager.GetUserAsync(User)
相关标签:
2条回答
  • 2021-01-06 10:16

    What I did:

    1. added this to Startup.ConfigureServices
    services.AddHttpContextAccessor();
    
    1. used this to get the username in my .razor page, these 2 lines first
    @inject UserManager<WebPageUser> UserManager
    @inject IHttpContextAccessor HttpContextAccessor
    
    1. then the call to show the username like this:
    <p>Hello @UserManager.GetUserName(HttpContextAccessor.HttpContext.User)</p>
    
    0 讨论(0)
  • 2021-01-06 10:31

    If you surround your code with the AuthorizeView component you can get access to a context object that supplies the current user.

    <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>
    

    If you don't want to use that approach you can request a cascading parameter called authenticationStateTask, which is provided by the 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.");
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题