我正在使用asp.net mvc core 2.1版本,并且在ApplicationUser类中添加属性时收到这两个错误 而且我在这段代码上收到错误:
var userIdentity = await manager.CreateIdentityAsync(this,DefaultAuthenticationTypes.ApplicationCookie);
我正在尝试从最近3天开始修复它,错误是:
'UserManager'不包含'CreateIdentityAsync'的定义,找不到可以接受的扩展方法'CreateIdentityAsync'接受类型为'UserManager'的第一个参数(您是否缺少using指令或程序集引用?)>
“名称'DefaultAuthenticationTypes'在当前上下文中不存在”
我的课在下面给出
public class ApplicationUser:IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this,DefaultAuthenticationTypes.ApplicationCookie);
return userIdentity;
}
public string FullName { set; get; }
public string MobileNumber { get; set; }
public int CountryId { get; set; }
public int StateId { get; set; }
public int CityId { set; get; }
public string Address { get; set; }
public string ShippingAddress { get; set; }
}
答案 0 :(得分:1)
不确定为什么需要在ClaimsIdentity
实体(应该是ApplicationUser
)内生成POCO
。据我所知,最好将其移动到其他位置。
如果您确实想为此Entity
添加方法,则有几种方法可以实现
根据@Thomas Levesque在评论中的建议,您可以使用SigninManager<ApplicationUser>.CreateUserPrincipalAsync()
来做到这一点。
另一种方法是使用IUserClaimsPrincipalFactory<TUser>
服务来创建ClaimsPrincipal
,然后获取身份。
var principal = _userClaimsPrincipalFactory.CreateAsync(TUser user);
// ... now we have the principal.Claims
// ... now we have the principal.Identity
最后,如果只想生成ClaimsIdentity
,则不需要UserManager
或SigninManager
或UserClaimsPrincipalFactory<TUser>
。只是as the ASP.NET Core Team does的新内容:
public class ApplicationUser : IdentityUser { public async Task GenerateUserIdentityAsync(UserManager manager) {var userIdentity = await manager.CreateIdentityAsync(this,DefaultAuthenticationTypes.ApplicationCookie);var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme); identity.AddClaim(new Claim(ClaimTypes.Name, this.UserName)); // ... add other claims as you like. return identity; } // ... }