gpt4 book ai didi

asp.net-core - 如何从 Blazor 中的数据库获取经过身份验证的用户

转载 作者:行者123 更新时间:2023-12-05 08:22:49 24 4
gpt4 key购买 nike

我想显示当前登录用户的电子邮件地址。但我不知道,如何得到它。我搜索了好几个小时,但一无所获。我找到了一些片段来获取名称,但没有片段来获取其他字段,如电子邮件或电话号码。此代码段中的用户没有从数据库中获取的 ID。

@page "/"
@inject AuthenticationStateProvider AuthenticationStateProvider

<button @onclick="@LogUsername">Write user info to console</button>
<br />
<br />
@Message

@code {
string Message = "";

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

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

最佳答案

对于具有身份的 Asp.Net Core Blazor,声明将不包含电子邮件声明。

要获取用户,您可以尝试 UserManager.GetUserAsync(ClaimsPrincipal principal),如下所示:

@page "/"
@inject AuthenticationStateProvider AuthenticationStateProvider
@using Microsoft.AspNetCore.Identity;
@inject UserManager<IdentityUser> UserManager;

<button @onclick="@LogUsername">Write user info to console</button>
<br />
<br />
@Message

@code {
string Message = "";

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

if (user.Identity.IsAuthenticated)
{
var currentUser = await UserManager.GetUserAsync(user);
Message = ($"{user.Identity.Name} is authenticated. Email is { currentUser.Email }");
}
else
{
Message = ("The user is NOT authenticated.");
}
}
}

关于asp.net-core - 如何从 Blazor 中的数据库获取经过身份验证的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57749320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com