所以我在我的网站上使用表单身份验证,并在SQL Server中设置了所有表和存储过程。唯一的问题是,我真的不认为我需要所有这些表,而且我也不是表名的忠实粉丝。
例如,我正在为员工使用身份验证,因此将表名从“aspnet_Users”更改为“Employees”会更好。我真的不需要Personalization表。但我不知道这是否会破坏任何事情。
是否可以修改/删除表和存储过程而不会搞乱一切?
答案 0 :(得分:9)
史蒂文,我认为你运行了aspnet_regsql.exe
命令行工具来添加这些数据库对象?或者,您可以通过运行适用的SQL脚本为成员的不同部分添加必要的表/视图/存储过程,您可以在%WINDIR%\Microsoft.Net\Framework\version
文件夹中找到它们(其中 version 是您正在使用的.NET版本,例如 v4.0.30319 )。
在那里,您会找到名为InstallCommon.sql
,InstallMembership.sql
,InstallRoles.sql
,InstallProfile.sql
,InstallSqlState.sql
等文件。您需要运行InstallCommon.sql
,然后运行您需要的其他文件。因此,如果您只需要会员资格和角色,则可以运行InstallCommon.sql
,InstallMembership.sql
和InstallRoles.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的用户,重命名将失去意义。