【问题标题】:Remove unique constrant and make username nullable in ASP.NET Identity在 ASP.NET Identity 中删除唯一约束并使用户名可以为空
【发布时间】:2014-09-25 08:43:23
【问题描述】:

我已经覆盖了一系列用于 ASP.NET Identity 2.0 的类,以便它们使用电子邮件地址字段而不是电子邮件字段。

当尝试创建一个用户时,它说The UserName field is required. 我尝试用[Index(IsUnique = false)] 覆盖我的ApplicationUser 类中的用户名字段,该类继承自IdentityUser 但这只会导致唯一约束和非唯一正在创建索引。

如何覆盖IdentityUser 类以使用户名可以为空且不唯一,因为我不想使用它。

注意: 我完全知道您可以使用 UserValidator 类中的 AllowOnlyAlphanumericUserNames 属性将电子邮件存储在用户名字段中。我真的不喜欢这种方法,只想删除这个约束,这样我就可以在没有用户名的情况下存储记录。我将修改我需要使用用户名查看电子邮件地址的任何功能。

【问题讨论】:

  • 根据 Identity Framework 的当前实现,无法根据您的要求使用现有的开箱即用方法。我建议您使用与电子邮件相同的用户名部分并设置 AllowOnlyAlphanumericUserNames = true。

标签: c# asp.net asp.net-mvc asp.net-identity


【解决方案1】:

这里是 IUserStore - http://git.io/XZ3psA 的完整实现我不会说有很多工作。

【讨论】:

    【解决方案2】:

    摆脱它的唯一真正方法是实现您自己的IUserStore。这听起来像是做了大量工作而几乎没有实际收获。

    请参阅 UserManager 具有方法 FindByNameAsync()IUserStore<TUser, in TKey> 还需要方法 Task<TUser> FindByNameAsync(string userName) 存在于实现类中。

    您还需要创建自己的IdentityDbContext 实现,或在ApplicationDbContext 中创建所需的表/关系以删除唯一性验证。这也是另一项工作。

    不值得。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 2012-09-02
      • 1970-01-01
      • 2022-01-14
      • 2014-09-12
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多