我正在为公共站点开发ASP.NET4.0 / C#应用程序,该应用程序只需要对在关联业务中工作的员工进行身份验证。我们的想法是让网站拥有一个CMS,以便员工可以进入并对某些内容进行更改,而无需使用任何HTML。
我的问题涉及ASP.NET成员资格提供程序的设计和使用。我不是试图让网站使用现有的数据库,因此不需要为此目的创建自己的MembershipProvider。但是,由于每个用户都是员工,我想跟踪其他信息,例如姓名和办公室号码。我可以想到两个明显的方法来实现这个目标:
使用默认的SqlMembershipProvider类。因此,我需要将适当的表添加到我的数据库中,并为我想要存储的任何“其他”信息创建一个单独的表。这有效地在用户表上创建了一个垂直分区,因为我也会使用asp.net分配的userID作为employee表的主键。要检索“其他”信息,我可以向提供商询问有关当前用户的信息,并在我想知道其他任何事情的情况下重新查询数据库。
为所有员工信息(包括登录名和密码)创建一个表,并使用我想要的功能创建我自己的自定义MembershipProvider和MembershipUser类。
我还考虑使用配置文件来存储此类信息,但是,该网站将公开包含员工列表,这些页面将需要访问其中的一些信息。因此,我应该缓存这些数据,似乎使用配置文件提供的序列化字段会导致问题。
因此,纯粹在设计方面...最好区分用户和员工,并使用默认的SqlMembershipProvider和关联的表,或者编写我自己的用户表来存储我需要的信息和我的自己的MembershipProvider用于访问该信息?
答案 0 :(得分:3)
如果我正确理解您的问题,您希望在ASP.NET成员资格中存储其他用户信息。我使用以下设置创建了许多网站。
Microsoft已就如何执行此操作编写了excellent post。
祝你好运!
<强>中号强>
答案 1 :(得分:1)
我正在做类似的事情,使用你的选项1.对我来说非常好。
我的业务逻辑具有一些用于改变用户的功能。它知道何时触摸我的用户表或成员身份功能。
使用自定义MembershipProvider进行此类操作将为您提供比您讨价还价更多的工作。
答案 2 :(得分:1)
SQL表配置文件提供程序(http://weblogs.asp.net/scottgu/archive/2006/01/10/435038.aspx)将帮助您实现这一目标。 您将获得配置文件的强大功能,同时不用担心缓存或序列化,因为此提供程序将配置文件信息存储在清除数据库表中而不进行任何序列化。您可以直接在查询中使用它们。