【发布时间】:2010-08-13 23:45:02
【问题描述】:
我正在为一个公共网站开发一个 ASP.NET4.0/C# 应用程序,该应用程序只需要对在相关企业工作的员工进行身份验证。这个想法是让网站拥有一个 CMS,这样员工就可以进入并更改某些内容,而无需使用任何 html。
我的问题与 ASP.NET 成员资格提供程序的设计和使用有关。我不想让网站与现有数据库一起工作,因此无需为此目的创建自己的 MembershipProvider。但是,由于每个用户都是员工,我想跟踪其他信息,例如姓名和办公室号码。我可以想到两种显而易见的方法来实现这一点:
使用默认的 SqlMembershipProvider 类。因此,我需要将适当的表添加到我的数据库中,并为我想要存储的任何“附加”信息创建一个单独的表。这有效地在用户表上创建了一个垂直分区,因为我也会使用 asp.net 分配的用户 ID 作为员工表的主键。要检索“附加”信息,我可以向提供者询问有关当前用户的信息,并在我想知道其他任何信息时重新查询数据库。
为所有员工信息(包括登录名和密码)创建一个表,并使用我想要的功能创建我自己的自定义 MembershipProvider 和 MembershipUser 类。
我也考虑过使用个人资料来存储此类信息,但是,该网站将公开包含员工列表,并且这些页面将需要访问其中的一些信息。因此,我可能应该缓存这些数据,似乎使用配置文件提供的序列化字段会导致问题。
因此,纯粹就设计而言...最好区分用户和员工并使用默认的 SqlMembershipProvider 和关联表,或者编写我自己的用户表来存储我需要的信息和我的拥有自己的 MembershipProvider 来访问该信息?
【问题讨论】:
-
你不想用他们的AD进行身份验证、办公号码等吗?
-
是的,如果我使用的是 Windows 身份验证。不过,他们的工作计算机不一定在同一个网络上,因此表单身份验证更有意义。
标签: asp.net database-design web-applications asp.net-membership