我已经有一段时间没有使用ASP.NET身份验证做过任何认真的工作了,我有点生疏了。尤其是现在ASP.NET Identity已经成为主流。我希望我能解释我在做什么,并有人告诉我为什么和哪里我的假设是错误的,或者如果它们没有错。
我正在构建的应用程序将符合HIPAA,因此我不能在数据库中存储任何个人身份信息。因此,我花了一些时间研究ASP.NET Identity是如何工作的,注意到了我的ApplicationUser(继承自IdentityUserpplicationDbContext。我读了几篇MSDN文章等等。
然后我注意到IdentityDbContext似乎与数据库中的AspNetUsers表绑定。然后,我在AspNetUsers表中注意到了一些令人担忧的事情,因为我正在编写一个无法存储任何个人身份信息的应用程序:电子邮件和电话号码列。
所以我想把它们去掉。我仔细查看了一下,发现AspNetUsers表映射到IdentityDbContext的DbSet属性(请参阅此处)TUser是ApplicationUser,它继承自IdentityUser。IdentityUser有电子邮件(请参阅此处)。
所以。。。毕竟。。。我的问题是:如果我想创建我自己的AspNetUsers版本,而不带电话号码/电子邮件地址等。我必须创建我自己实现的IUser来代替IdentityUser,对吗?
那么,我在做这件事时会遇到什么特别的问题吗?或者这应该是一项相当简单的任务吗?我是不是只想从数据库中删除电子邮件,就要删除很多预先编写的代码?
就我个人而言,将Email属性作为与用户身份相关的任何基本类的一部分似乎是不合理的,尤其是当ASP.NET identity被吹捧为高度灵活的东西时(让人们将自己的Email属性添加到自动生成的ApplicationUser类中似乎更合理)。
对我来说,过于担心一个我可以写任何东西的专栏似乎很愚蠢,但对于任何不得不处理HIPAA法规的人来说,这可能会让你产生偏执(并想尽一切努力删除任何可能被误认为持有个人信息的内容)。
删除电话号码应该不是问题。删除电子邮件字段将是一个更大的痛苦,因为它是由框架使用的。
我会实现我自己的IUserStore
(以及所有相关的)类。查看此帖子以获得初步指导:http://odetocode.com/blogs/scott/archive/2014/01/20/implementing-asp-net-identity.aspx
然后用他们的UserStore
获取Identity源代码,并找出所有需要电子邮件的部分。