名称不能为空或为空.asp.net 身份 mvc 5 + 实体怪胎



有人对此有问题吗?他给我抛出错误:名称不能为空或空。但在表中没有名为"名称"的属性。我想自定义 Asp.Net 标识。

控制器

  public class HomeController : Controller
{
    //
    // GET: /Home/
    public async Task<ActionResult> Index()
    {
        var userStore = new UserStore<User,Identity_2Context.MyRole,long,Identity_2Context.MyUserLogin,Identity_2Context.MyUserRole,Identity_2Context.MyClaim>(new Identity_2Context());
        var manager = new UserManager<User,long>(userStore);
        var user = new User()
        {
            UserName = "TehnoMac",Email = "TehnoMac@tehcno.com",IsApproved = true,IsLockedOut = false,
            CreatedDate = DateTime.Now,LastActivityDate = DateTime.Now,LastLoginDate = DateTime.Now,FailedPasswordAnswerAttemptCount = 0,
            FailedPasswordAttemptCount = 0
        };
        var result = await manager.CreateAsync(user, "test123test");
        if (result.Succeeded)
        {
            var authenticationManager = HttpContext.GetOwinContext().Authentication;
            var userIdentity = manager.Create(user, DefaultAuthenticationTypes.ApplicationCookie);
        }
        else
        {
            ViewBag.Text = result.Errors.FirstOrDefault();
        }
        return View();
    }
}

身份模型公共类应用程序用户:身份用户 { }

public class MyClaim:IdentityUserClaim<long>
{
}
public class MyRole:IdentityRole<long,MyUserRole>
{
}
public class MyUserRole:IdentityUserRole<long>
{
}
public class MyUserLogin:IdentityUserLogin<long>
{
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser,MyRole,long,MyUserLogin,MyUserRole,MyClaim>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }
}

确保您指定了用户名。我遇到了同样的错误,设置UserName属性后,错误消失了。

已解决(至少对我来说)通过从自定义标识中删除用户名属性(它在 GitHub ASPNetIdentitySample 项目中,我猜人们是从哪里得到它的)。它隐藏了 IdentityUser 中的 UserName 属性

即使

不使用用户名,也必须为标识指定用户名。例如,您需要使用电子邮件和密码登录,而不是使用电子邮件变量设置用户名。

将电子邮件变量传递给用户名属性

为什么我们需要这样做?因为我们需要一个 IdentityUser 构造函数中的用户名。标识用户构造函数

相关内容

  • 没有找到相关文章

最新更新