【问题标题】:IdentityUser vs my custom user tableIdentityUser 与我的自定义用户表
【发布时间】:2015-01-07 16:40:17
【问题描述】:

我有一个 PHP/MySQL 系统,我正在使用 Azure SQL 将其移植到 ASP.NET MVC5。我在理解 Microsoft 引入的新身份解决方案的概念时遇到了问题。由于数据库结构从之前的系统中存在,我已经将旧的 MySQL 数据库转移到 Azure SQL。到目前为止,一切都很好。我有一个包含所有用户相关数据的用户表,例如用户名、电子邮件密码等。因为我想继续使用此表,所以我创建了 Identity 用户表中存在的额外数据库字段。我还创建了自定义 UserManager 和其他类(MyUser、MyClaim 等),因此我能够登录。一切正常。

由于我采用的是数据库优先方法,而不是代码优先方法,因此我想使用 User 类与用户表进行交互。但我的 UserManager 返回 MyUser 类(继承自 IdentityUser),而不是我模型中的 User 类。当我询问 User 表中的所有用户时,甚至我的 dbcontext 也会返回 MyUser 类。

我是否真的需要手动更新 MyUser 类来复制 User 表,所以如果我在 User 表中进行更改并更新我的模型,我必须手动更新 MyUser 类,因为系统无法/woun '不使用模型用户类?

【问题讨论】:

  • 我建议实现custom membership
  • 谢谢,我会调查的!
  • @AndreiV 我强烈反对在任何新开发中使用 MembershipProvider。身份框架比你所说的贬义方法要好得多。
  • 对不起,我不清楚你的问题。 UserMyUser 类之间有什么区别?他们在不同的桌子上吗?你能显示他们的代码吗?为什么你有 2 个?
  • @trailmax 我对你的说法没有反对意见。但是,我不禁注意到您所写内容中的 new 一词以及问题的上下文。他们并没有真正齐头并进。我希望您能就在这种情况下如何使用身份框架提供一些指导,因为我也有类似的问题。

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


【解决方案1】:

IdentityUser 表示默认的 EntityFramework IUser 实现。由于您拥有自己的现有架构,因此您将不得不手动滚动一些类来实现 ASP.NET Identity 以使用您自己的表。

为了将您的 User 类与 ASP.NET Identity 一起使用,您需要确保它继承自 Microsoft.AspNet.Identity.IUser。实现 IUser 后,使用对您的 User 类的引用更新对 MyUser 的所有引用。注意:为了清楚起见,您可能希望将 User 类更新为 MyAppNameUser 之类的内容。

完成上述操作后,您可能需要实现 IUserStore 以便 UserManager 类可以与您的数据库架构进行交互。

您可能想查看https://github.com/raquelsa/AspNet.Identity.MySQL 以了解有关实现某些 ASP.NET 身份接口的一些想法。

【讨论】:

  • 我的用户类(相当于我的用户表)是自动生成的,属于 .edmx 文件。您是否建议我手动更改该类以从 IUser 接口继承?所以如果我从数据库中更新模型,我必须再次手动更改它?
  • 您可以创建一个 User 部分类并在那里实现 IUser。您不想修改自动生成的部分类。这是一个示例:stackoverflow.com/questions/2606461/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
  • 1970-01-01
相关资源
最近更新 更多