对 ASP.NET Identity 和 IdentityDbContext 感到困惑
Confused by ASP.NET Identity and IdentityDbContext
我已经有一段时间没有使用 ASP.NET 身份验证完成任何认真的工作了,我有点生疏了。尤其是现在 ASP.NET 身份是最重要的。我希望我能解释我在做什么,并让别人告诉我我的假设为什么和哪里错了,或者如果他们没有错。
我正在构建的应用程序将符合 HIPAA 标准,因此我无法在数据库中存储任何个人身份信息。所以我花了一些时间研究 ASP.NET Identity 是如何工作的,注意到像我的 ApplicationUser(它继承自 IdentityUser)这样的东西,以及作为 ApplicationDbContext(继承自 IdentityDbContext)。我读了几篇 MSDN 文章等等。
然后我注意到 IdentityDbContext 似乎与数据库中的 AspNetUsers table 相关联。然后我在 AspNetUsers table 中注意到一些与我有关的内容,因为我正在编写一个无法存储任何个人身份的应用程序:电子邮件和电话号码列。
所以我想删除那些。我仔细看了看,发现 AspNetUsers table 映射到 DbSet 属性 IdentityDbContext(参见 here). TUser is ApplicationUser, which inherits from IdentityUser. And IdentityUser has Email (see here)。
所以...毕竟...我的问题是:如果我想创建自己的 AspNetUsers 版本而没有 phone 号码/电子邮件地址/等。我必须创建自己的 IUser 实现来代替 IdentityUser,对吗?
我要 运行 做这件事有什么特别的难点吗,或者这应该是一个相当简单的任务?只是想从数据库中删除电子邮件,我是否要删除大量预先编写的代码?
就我个人而言,电子邮件 属性 是与用户身份相关的任何基本 class 的一部分似乎是不合理的——尤其是当 ASP.NET 身份被吹捧为某种东西时高度灵活(对我来说,让人们将自己的电子邮件 属性 添加到自动生成的 ApplicationUser class 似乎更合理)。
对我来说,为一个我可以写任何东西的专栏担心太多似乎很愚蠢,但对于任何曾经不得不处理 HIPAA 规定的人来说,它会让你的内心产生偏执狂(并想做任何事情您可以删除任何可能被误认为持有个人信息的内容)。
删除 phone 号码应该不是问题。删除电子邮件字段将是一个更大的痛苦,因为它被框架使用。
我会实现自己的 IUserStore
(以及所有相关的)类。查看此 post 以获得初步指导:http://odetocode.com/blogs/scott/archive/2014/01/20/implementing-asp-net-identity.aspx
然后用他们的 UserStore
得到 Identity source code 并删除所有需要电子邮件的部分。
我已经有一段时间没有使用 ASP.NET 身份验证完成任何认真的工作了,我有点生疏了。尤其是现在 ASP.NET 身份是最重要的。我希望我能解释我在做什么,并让别人告诉我我的假设为什么和哪里错了,或者如果他们没有错。
我正在构建的应用程序将符合 HIPAA 标准,因此我无法在数据库中存储任何个人身份信息。所以我花了一些时间研究 ASP.NET Identity 是如何工作的,注意到像我的 ApplicationUser(它继承自 IdentityUser)这样的东西,以及作为 ApplicationDbContext(继承自 IdentityDbContext)。我读了几篇 MSDN 文章等等。
然后我注意到 IdentityDbContext 似乎与数据库中的 AspNetUsers table 相关联。然后我在 AspNetUsers table 中注意到一些与我有关的内容,因为我正在编写一个无法存储任何个人身份的应用程序:电子邮件和电话号码列。
所以我想删除那些。我仔细看了看,发现 AspNetUsers table 映射到 DbSet 属性 IdentityDbContext(参见 here). TUser is ApplicationUser, which inherits from IdentityUser. And IdentityUser has Email (see here)。
所以...毕竟...我的问题是:如果我想创建自己的 AspNetUsers 版本而没有 phone 号码/电子邮件地址/等。我必须创建自己的 IUser 实现来代替 IdentityUser,对吗?
我要 运行 做这件事有什么特别的难点吗,或者这应该是一个相当简单的任务?只是想从数据库中删除电子邮件,我是否要删除大量预先编写的代码?
就我个人而言,电子邮件 属性 是与用户身份相关的任何基本 class 的一部分似乎是不合理的——尤其是当 ASP.NET 身份被吹捧为某种东西时高度灵活(对我来说,让人们将自己的电子邮件 属性 添加到自动生成的 ApplicationUser class 似乎更合理)。
对我来说,为一个我可以写任何东西的专栏担心太多似乎很愚蠢,但对于任何曾经不得不处理 HIPAA 规定的人来说,它会让你的内心产生偏执狂(并想做任何事情您可以删除任何可能被误认为持有个人信息的内容)。
删除 phone 号码应该不是问题。删除电子邮件字段将是一个更大的痛苦,因为它被框架使用。
我会实现自己的 IUserStore
(以及所有相关的)类。查看此 post 以获得初步指导:http://odetocode.com/blogs/scott/archive/2014/01/20/implementing-asp-net-identity.aspx
然后用他们的 UserStore
得到 Identity source code 并删除所有需要电子邮件的部分。