修改ASP.NET成员资格架构

时间:2011-01-03 20:08:28

标签: c# asp.net sql-server asp.net-membership

所以我在我的网站上使用表单身份验证,并在SQL Server中设置了所有表和存储过程。唯一的问题是,我真的不认为我需要所有这些表,而且我也不是表名的忠实粉丝。

例如,我正在为员工使用身份验证,因此将表名从“aspnet_Users”更改为“Employees”会更好。我真的不需要Personalization表。但我不知道这是否会破坏任何事情。

是否可以修改/删除表和存储过程而不会搞乱一切?

4 个答案:

答案 0 :(得分:9)

史蒂文,我认为你运行了aspnet_regsql.exe命令行工具来添加这些数据库对象?或者,您可以通过运行适用的SQL脚本为成员的不同部分添加必要的表/视图/存储过程,您可以在%WINDIR%\Microsoft.Net\Framework\version文件夹中找到它们(其中 version 是您正在使用的.NET版本,例如 v4.0.30319 )。

在那里,您会找到名为InstallCommon.sqlInstallMembership.sqlInstallRoles.sqlInstallProfile.sqlInstallSqlState.sql等文件。您需要运行InstallCommon.sql,然后运行您需要的其他文件。因此,如果您只需要会员资格和角色,则可以运行InstallCommon.sqlInstallMembership.sqlInstallRoles.sql。这样,您的数据库就不会包含用于配置文件,SQL状态等的表/视图/ sprocs。

所有这些,我只是留下ASP.NET添加的所有数据库对象。仅添加感兴趣的子集可能需要更多的工作,而且,您知道,您可能需要稍后实现配置文件或运行状况监控,以便为什么不将这些其他数据库对象放在适当的位置 准备好了。

并回答您的第一个问题 - 不,无法将表格名称从aspnet_Users更改为Employees。但是,创建自己的表(可能称为Employees)来存储有关员工的信息并不罕见。然后,该表将具有返回aspnet_Users的外键,该外键将员工链接到特定的登录帐户。请参阅Storing Additional User Information了解如何实现这一目标。

快乐编程!

答案 1 :(得分:2)

为什么不写一个简单的SqlMembershipProvider

编辑:不,默认提供商期望该架构。我不建议修改它。

答案 2 :(得分:1)

您是否考虑过将认证内容留在自己的数据库中?

答案 3 :(得分:1)

您可以在Scott Mitchell提到的.sql脚本中将所有对aspnet_Users的引用更改为Employees,但不建议这样做。 Membership / Roles API使用存储过程。因此,如果您不更改storedProc名称,您将没事。

如果将来对成员资格/角色提供程序和/或API进行更改,则可能会出现问题。

另外说,将来你需要访问一些不是Employees的用户,重命名将失去意义。