混淆ASP.NET Identity和IdentityDbContext

3

我已经有一段时间没有使用ASP.NET身份验证进行严肃的工作了,我有点生疏。特别是现在ASP.NET Identity是主流。我希望我能解释我正在做什么,并让有经验的人告诉我我的假设在哪里错误或者它们是否不正确。

我正在构建的应用程序将符合HIPAA标准,因此我不能在数据库中存储任何个人可识别信息。所以我花了一些时间研究ASP.NET Identity的工作原理,注意到像我的ApplicationUser(继承自IdentityUser)和ApplicationDbContext(继承自IdentityDbContext)这样的东西。我阅读了一些MSDN文章等等。

然后我注意到IdentityDbContext似乎与数据库中的AspNetUsers表相关联。由于我正在编写一个不能存储任何个人可识别信息的应用程序,所以我在AspNetUsers表中发现了一些令我担忧的事情:电子邮件和电话号码列。

所以我想要去除那些。我看了一下,发现AspNetUsers表被映射到IdentityDbContextDbSet属性下(参见这里)。TUserApplicationUser,它继承自IdentityUser。而IdentityUser有电子邮件(参见这里)。
所以...经过这一切...我的问题是:如果我想创建自己的版本的AspNetUsers,不包括电话号码/电子邮件地址/等等,我将不得不创建自己的IUser实现来替换IdentityUser,对吗?
在这样做时,我会遇到任何特定的问题吗,还是这应该是一个相当简单的任务?我只想从数据库中删除Email,我会砍掉很多预先编写的代码吗?

对我个人而言,似乎将电子邮件属性作为与用户身份相关的任何基本类的一部分是不合理的——特别是当ASP.NET Identity被宣传为非常灵活的东西时(对我来说,更合理的做法似乎是让人们将自己的电子邮件属性添加到自动生成的ApplicationUser类中)。

对于那些曾经不得不处理HIPAA法规的人来说,可能会认为我过于担心一个可以随意编写任何内容的列,但这可能会使你产生疑虑(并希望尽一切可能消除任何可能被误认为持有个人信息的东西)。


1
创建自己的 IUser 实体,并不需要烦恼于不想要的字段。Asp.Net Identity 的可扩展性正是为此而设计的。 - user47589
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接