如何使用身份 2.0 存储 public 和内部用户

How to store both public and internal users using identity 2.0

我有一个应用程序,其中包含 public 和内部用户。

目前,这两种用户都存储在AspNetUsers 表中。 public个用户只有一个Role,即Public个User,注册成功后分配给用户。如果分配,内部用户可以具有任何角色。

我非常担心可以以某种方式 public 可以在系统中分配一些角色并执行操作。

你能告诉我如何解决这个问题吗?

我应该将两种用户分成不同的表吗?

Could you please tell me how to eliminate this problem?

如果这两种用户之间的唯一区别是他们的角色,那么只需在您的用户 table 中使用标志列 IsPrivate。之后,在角色管理页面中确保您始终处理具有列 IsPrivate == true 的用户。您可以通过创建从 IdentityUser 派生的单独 类 PublicUserPrivateUser 来更进一步。并使用 Table Per HierarchyIsPrivate 将用作鉴别器)。

在您的 DbContext 中,您将有两个 DbSet,一个用于 PublicUser,另一个用于 PrivateUser。后一个应该用于管理用户角色。

Should I separate two kind of users into distinct tables?

没有。如果这两种用户的唯一区别只是他们所附加的角色,那么使用一个 table 并确保像我上面所说的那样在上面加上一个鉴别器。如果它们之间存在其他差异而不仅仅是附加角色,那么您可以查看 Table Per Type or Table Per Concrete.