c# - 是否将用户设置存储在 ASP.NET Core Identity AspNetUsers 表中

标签 c# .net asp.net-mvc asp.net-core

我正在使用 ASP.NET Core 设置一个 Web 应用程序,并通过 Identity Framework 进行身份验证。快问。我正在存储有关用户的各种数据,例如他们的地址、帐户设置、订阅状态和到期日期等。我是否最好通过创建继承 IdentityUser 的 ApplicationUser 类来将所有这些数据存储在 AspNetUsers 表中,或者我应该保留该表用于登录/安全信息并创建另一个表来存储仅与我的应用程序相关的数据,并且这两个表之间具有一对一的关系?

最佳答案

始终是一个单独的表/类。

复杂性随着应用程序的增加而增加。 table 会变得太大,然后你会花时间离开它。我们的旧应用程序中也有类似的情况,组织已发展到 70 多个列。我在 Twitter 上听说过有类似经历的人的故事。

除此之外,您还可以考虑单一职责。给定一个更改原因 - 或更多 Uncle Bobs 更新的定义“一个模块应该对一个且仅一个参与者负责”

您最终可能会对每个模块进行设置 - 添加的越多,它就会变得越大。当然,留到以后再改变吧 - 但这永远不会发生。

对我来说,身份是它自己的系统。不是你的系统。它提供了一种身份验证机制。它使用用户类中的能力或字段中的大多数列来执行此操作。

您的设置与您的应用程序有关 - 这是您的域。如果替换 Identity,则可能会替换该用户表/用户类。那么您的设置最终会在哪里?

关于c# - 是否将用户设置存储在 ASP.NET Core Identity AspNetUsers 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55614524/

相关文章:

c# - 使用 .Net 绘制解析树的最简单和最快的方法是什么?

c# - 将字符串转换为其代码点

.net - 默认证书验证程序

c# - asp.net 身份中的软删除

c# - 在类上使用 DisplayAttribute

c# - 设置 View 的文本框(日期时间字段)以显示只读当前日期时间

c# - C# 可以像 Objective C 一样在 main 之前或之后运行代码吗

c# - 在 C# 中与 tcpclient 的多个连接

c# - 从 SQL Server 中检索 varbinary(MAX) 到 C# 中的 byte[]

c# - C# 中的拖放排序 - 最佳算法