【问题标题】:Confused by ASP.NET Identity and IdentityDbContext被 ASP.NET Identity 和 IdentityDbContext 弄糊涂了
【发布时间】:2015-06-20 14:31:05
【问题描述】:

我已经有一段时间没有使用 ASP.NET 身份验证做任何严肃的工作了,我有点生疏了。尤其是现在 ASP.NET 身份已经成为主流。我希望我能解释我在做什么,并有人告诉我为什么我的假设是错误的,在哪里是错误的,或者他们是否没有错。

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

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

所以我想删除那些。我稍微查看了一下,发现 AspNetUsers 表映射到 IdentityDbContextDbSet 属性(请参阅here)。 TUserApplicationUser,继承自IdentityUserIdentityUser 有电子邮件(请参阅here)。

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

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

就我个人而言,将 Email 属性作为与用户身份相关的任何基本类的一部分似乎是不合理的——尤其是当 ASP.NET 身份被吹捧为高度灵活的东西时(对我来说,仅仅这样做似乎更合理让人们将自己的电子邮件属性添加到自动生成的 ApplicationUser 类)。

对于我可以写任何东西的专栏如此担心对我来说可能看起来很愚蠢,但对于曾经不得不处理 HIPAA 法规的任何人来说,它可能会让你的内心产生偏执狂(并且想尽你所能删除任何甚至可能被误认为持有个人信息的内容)。

【问题讨论】:

  • 创建您自己的IUser 实体,不要打扰您不想要的字段。 Asp.Net Identity 可以像这样扩展。

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


【解决方案1】:

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

我会实现我自己的IUserStore(以及所有相关的)类。查看这篇文章以获得初步指导:http://odetocode.com/blogs/scott/archive/2014/01/20/implementing-asp-net-identity.aspx

然后获取Identity source code 和他们的UserStore 并删除所有需要电子邮件存在的位。

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 2019-01-12
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2014-08-14
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多