gpt4 book ai didi

c# - UserManager' does not contain a definition for ' CreateIdentityAsync' 并且没有可访问的扩展方法

转载 作者:太空宇宙 更新时间:2023-11-03 22:38:38 24 4
gpt4 key购买 nike

我正在使用 asp.net mvc core 2.1 版本,在 ApplicationUser 类中添加属性时收到这两个错误我在这段代码上收到错误:

 var userIdentity = await manager.CreateIdentityAsync(this,DefaultAuthenticationTypes.ApplicationCookie);

我正在尝试修复最近 3 天的错误:

'UserManager' does not contain a definition for 'CreateIdentityAsync' and no accessible extension method 'CreateIdentityAsync' accepting a first argument of type 'UserManager' could be found (are you missing a using directive or an assembly reference?)

“名称‘DefaultAuthenticationTypes’在当前上下文中不存在”

我的类(class)如下

 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; }

}

最佳答案

不确定为什么需要生成 ClaimsIdentityApplicationUser 内实体,应该是 POCO .据我所知,最好将它移到其他地方。

如果你想为这个 Entity 添加一个方法, 有几种方法可以做到这一点

  1. 根据 @Thomas Levesque 的建议在评论中,您可以使用 SigninManager<ApplicationUser>.CreateUserPrincipalAsync()这样做。

  2. 另一种方法是使用 IUserClaimsPrincipalFactory<TUser> 服务创建 ClaimsPrincipal然后获取身份。

    var principal = _userClaimsPrincipalFactory.CreateAsync(TUser user);
    // ... now we have the principal.Claims
    // ... now we have the principal.Identity
  3. 最后,如果您只想生成一个 ClaimsIdentity , 你不需要 UserManagerSigninManagerUserClaimsPrincipalFactory<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;    }    // ...}

关于c# - UserManager<XYZ >' does not contain a definition for ' CreateIdentityAsync' 并且没有可访问的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53608613/

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