[英]How do I access current IdentityUser properties if a User is logged in?
我使用带有单独身份验证的 blazorwasm 模板的默认值创建了这个应用程序。 下面是我的一些 csproj 文件。
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="3.2.0-preview3.20168.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.1" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="3.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="3.1.3" />
<PackageReference Include="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
当用户登录时,我正在尝试从派生自 IdentityUser 的 ApplicationUser 检索属性。 我目前正在查看 3 个类(UserManager、SignInManager 和 ApplicationUser)。 我还用我想要检索的属性扩展了 ApplicationUser。 此属性用于仅在数据库中查询具有此属性值的记录。 换句话说,来自数据库表 AspNetUsers 的值。
我创建了一个服务 class 来在我的应用程序中处理这个问题。 从我的 controller 我设置ApplicationUser user
,然后调用我创建的服务user = await this._userServices.GetUserInformation(User)
(大写的用户是登录用户)
在用户服务 class 中,这就是我所拥有的:
public class UserServices : IUserServices
{
private UserManager<ApplicationUser> _userManager;
public UserServices(
UserManager<ApplicationUser> userManager)
{
this._userManager = userManager;
}
public async Task<ApplicationUser> GetUserInformation(ClaimsPrincipal userClaim)
{
var userId = userClaim?.FindFirst("UserId")?.Value; // returns null if no user logged in
var user = await _userManager.FindByIdAsync(userId);
return user;
}
}
调用此命令后,您可以对您的用户进行 null 检查。
您从此处获得的用户信息(即 AspNetUsers 表中的内容)将包含您需要的字段。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.