由ASP.NET Identity和IdentityDbContext混淆

时间:2015-04-14 20:10:59

标签: asp.net-mvc asp.net-identity asp.net-identity-2

我已经有一段时间了,因为我使用ASP.NET身份验证做了很多认真的工作,而且我有点生疏了。特别是现在ASP.NET身份就是其中之物。我希望我可以解释我在做什么,让别人告诉我为什么以及我的假设是错误的,或者他们没有错。

我构建的应用程序将符合HIPAA标准,因此我无法在数据库中存储任何个人身份信息。所以我花了一些时间来研究ASP.NET身份如何工作,注意我的 ApplicationUser (继承自 IdentityUser )以及 ApplicationDbContext (继承自 IdentityDbContext )。我读了几篇MSDN文章,等等。

然后我注意到 IdentityDbContext 似乎与数据库中的 AspNetUsers 表绑定在一起。然后我在 AspNetUsers 表中发现了一些与我有关的事情,因为我正在编写一个无法存储任何个人身份信息的应用程序:Email和PhoneNumber列。

所以我想删除它们。我查看了一下,看到 AspNetUsers 表被映射到 IdentityDbContext DbSet 属性(参见here) 。 TUser ApplicationUser ,它继承自 IdentityUser 。并且 IdentityUser 具有电子邮件(请参阅here)。

所以......毕竟......我的问题是:如果我想创建自己的 AspNetUsers 版本,没有电话号码/电子邮件地址/等等我将不得不创建我自己实现的IUser代替了IdentityUser,对吗?

我是否会遇到任何特殊的问题,那么,或者这应该是一项相当简单的任务?我想通过从数据库中删除电子邮件来消除大量预先编写的代码吗?

就我个人而言,电子邮件属性是与用户身份相关的任何基础类的一部分似乎是不合理的 - 特别是当ASP.NET身份被吹捧为非常灵活的东西时(对我而言,这似乎更合理)让人们将自己的Email属性添加到自动生成的 ApplicationUser 类中。

对于我可以写任何内容的专栏而言,我可能看起来很愚蠢,但是对于任何曾经不得不处理HIPAA规则的人来说,它可以在你的心中妄想(并希望尽你所能)删除任何甚至可能被误认为持有个人信息的东西)。

1 个答案:

答案 0 :(得分:1)

摆脱电话号码应该不是问题。删除电子邮件字段将是一个更大的痛苦,因为框架使用它。

我将实现自己的IUserStore(以及所有相关的)类。请查看此帖子以获取初步指导:http://odetocode.com/blogs/scott/archive/2014/01/20/implementing-asp-net-identity.aspx

然后使用UserStore获取Identity source code并输出需要电子邮件出现的所有位。