不同表的身份验证?

时间:2013-10-08 12:19:14

标签: c# authentication

我是mvc4的新手,并尝试开发一个新的应用程序,我在表Employee,admin和customer中有三个用户。问题是客户有多个字段而不是员工或管理员,所以我不能创建一个用户表,然后我为每个包含用户名和密码的用户创建了一个不同的表。现在,当我想从各自的表中验证用户时,我迷失了。是否可以或应该使用用户名和密码单独创建用户表?但是,在创建客户,员工和管理员之前,我是否必须首先创建用户?

1 个答案:

答案 0 :(得分:3)

  

所以我不能制作单个用户表

当然可以。只需将“用户”与“有关用户的详细信息”分开即可。例如,假设您在此处有一个Users表:

Users
---------
ID (PK)
Username
Password
(maybe a few other fields)

然后你将这个其他一些表子分类。表格如:

Employee
----------
ID (PK, FK to Users)
Name
EmployeeNumber
etc.

Customer
----------
ID (PK, FK to Users)
Name
CustomerNumber
etc.

Admin
----------
ID (PK, FK to Users)
(you get the idea)

非常类似于面向对象系统中的子类,这允许您在关系系统中进行子表。应用程序中的登录组件仅涉及Users表,然后一旦经过身份验证,其他组件就可以从其他表中获取有关该用户的信息。 (这样可以让单个用户不止一件事。例如Employee也是Admin。)

编辑:请记住,这是基于对非常了解您的关系数据需求。您也可以使用以下设置完成相同的操作:

Users
----------
ID (PK)
Username
etc.

Roles
----------
ID (PK)
RoleName

UsersInRoles
----------
UserID (FK to Users)
RoleID (FK to Roles)

(Other tables about users)

此设置与ASP.NET成员资格系统内置的内容更接近,因此您可以从中获益。虽然根据您对用户数据的描述,您可能仍需要对包含用户信息的某些表进行子类型,以避免出现大量空值。