C# 如何在asp.net 5中创建类别实体

C# 如何在asp.net 5中创建类别实体,c#,asp.net,asp.net-identity,asp.net-core,C#,Asp.net,Asp.net Identity,Asp.net Core,在旧的asp.net identity 2.0中,Microsoft.AspNet.identity.UserManager类型中有一个CreateIdentityAsync()方法。但是现在asp.net 5已经删除了这个方法,我现在如何创建一个代表用户的ClaimsEntity?提前谢谢 public virtual Task<ClaimsIdentity> CreateIdentityAsync(TUser user, string authenticationType);

在旧的asp.net identity 2.0中,Microsoft.AspNet.identity.UserManager类型中有一个CreateIdentityAsync()方法。但是现在asp.net 5已经删除了这个方法,我现在如何创建一个代表用户的ClaimsEntity?提前谢谢

public virtual Task<ClaimsIdentity> CreateIdentityAsync(TUser user, string authenticationType);
公共虚拟任务CreateIdentityAsync(用户,字符串身份验证类型);

这就是你要找的吗

IUserClaimsPrincipalFactory接口


为工厂提供从用户创建System.Security.Claims.ClaimsPrincipal的抽象。此抽象已更改为UserManager.CreateAync,并返回标识Result,指示是否成功创建新用户


如果您想添加索赔,您可以通过UserManager.AddClaimesync进行添加。

您可以通过示例
可下载项目找到如何使用
ClaimEntity
示例

此问题本质上是.Hi@Pinpoint的重复,谢谢。我在使用您的AspNet.Security.OpenIdConnect.Server时遇到了这个问题。这是一个伟大的项目。问题是当我在你的答案中使用这个方法时,请看下面。我找到了标识。名称为空。为什么它是空的?如何修复此问题?很抱歉,我无法在另一个问题的答案中添加注释,因为我是一个新的so用户。var identity=newclaimsidentity(等待userManager.GetClaimsAsync(用户),OpenIdConnectDefaults.AuthenticationScheme);嘿(谢谢你的好话!)。默认情况下,
ClaimsIdentity.Name
使用
ClaimTypes.Name
声明,因此请确保显式添加它,因为
GetClaimsAsync
不太可能为您添加它(它基本上只返回自定义声明)。当使用
UserClaimsPrincipalFactory
时,它会自动通过标识为您完成:.Hi@Pinpoint。是的,UserClaimsPrincipalFacotry有效,它现在可以获得“ClaimsEntity”。但是在对用户进行身份验证后的OAtuh客户端(“UsejwtBeareAuthentication”)上,identity.Name仍然为null。。您能帮助我吗?别忘了,
AspNet.Security.OpenIdConnect.Server
将拒绝序列化未明确指定目标的声明,以避免在潜在可读令牌中泄漏机密数据。您可以找到有关此问题的更多信息:。如果您需要一个演示如何指定现有主体的代码示例,请不要犹豫,打开一个单独的问题,我将发布一个完整的代码片段。