Tal*_*dan 2 asp.net-core blazor blazor-server-side
我想显示当前登录用户的电子邮件地址。但我不知道,如何得到它。我搜索了很多小时,但一无所获。我找到了一些片段来获取名称,但没有片段可以获取其他字段,例如电子邮件或电话号码。此代码段中的用户没有从数据库中获取它的 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.");
}
}
}
Run Code Online (Sandbox Code Playgroud)
Tao*_*hou 11
对于带有身份的 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.");
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5156 次 |
| 最近记录: |