我有一个应用程序,其中包含公共和内部用户。
- 公共用户:通过表单、FaceBook 或 Google 注册用户。
- 内部用户:负责管理内容的用户。他们属于一个或多个角色。
目前,这两种类型的用户都存储在 AspNetUsers 表中。公共用户只有一个角色,即公共用户,并在成功注册时分配给用户。如果分配了内部用户可以具有任何角色。
我非常担心以某种方式可以为公共角色分配一些角色并在系统中执行操作。
你能告诉我如何消除这个问题吗?
我应该将两种用户分成不同的表吗?
你能告诉我如何消除这个问题吗?
如果这两种用户之间的唯一区别是他们的角色,则只需在用户表中使用IsPrivate
标志列。之后,在角色管理页面中,确保您始终与具有列IsPrivate == true
的用户打交道。您可以通过创建从IdentityUser
派生的单独的类PublicUser
和PrivateUser
来更进一步。并使用每个层次结构的表(IsPrivate
将用作鉴别器(。
在您的DbContext
中,您将有两个DbSet
一个用于PublicUser
,另一个用于PrivateUser
。后者应该用于管理用户角色。
我应该将两种用户分成不同的表吗?
不。如果与这两种用户的唯一区别只是他们所附加的角色,那么使用一个表并确保在上面放置一个鉴别器,如我上面所说。如果它们之间存在其他差异,而不仅仅是附加角色,那么您可以查看每个类型的表或每个混凝土的表。