我有一个应用程序,其中包含公共和内部用户。
目前,两种用户都存储在AspNetUsers表中。公共用户只有一个角色,即公共用户,并在成功注册时分配给用户。如果已分配,内部用户可以拥有任何角色。
我非常担心公开的人可以分配一些角色并在系统中执行操作。
你能告诉我如何消除这个问题吗?
我应该将两种用户分成不同的表吗?
答案 0 :(得分:3)
你能告诉我如何消除这个问题吗?
如果这两种用户之间的唯一区别是他们的角色,那么只需在users表中使用标记列IsPrivate
即可。之后在角色管理页面中确保您始终处理具有列IsPrivate == true
的用户。您可以通过创建源自PublicUser
的单独类PrivateUser
和IdentityUser
来进一步发展。并使用Table Per Hierarchy(IsPrivate
将用作鉴别器。)
在DbContext
中,您DbSet
有两个PublicUser
,PrivateUser
有一个public class AudioControl: MonoBehaviour {
void SetVolume(Slider slider) {
AudioListener.volume = slider.Value;
// probably save this value to a playerpref so it is remembered.
}
}
。后者应该用于管理用户角色。
我应该将两种用户分成不同的表吗?
没有。如果与这两种用户的唯一区别仅在于它们所附加的角色,那么使用一个表并确保如上所述将其作为鉴别器。如果它们之间存在其他差异,那么您可以查看Table Per Type或Table Per Concrete。