我想知道在新网站中设置会员资格的“正确”方式。
当我有新项目时,我可以访问网站/ ASP.NET配置。在那里,我可以设置Forms身份验证并管理将使用此页面的所有用户。我可以在文件夹上制作角色和规则。所有这些信息都保存在表中,该表将本地保存在数据库App_Data / ASPNETDB.MDF中。我想要做的是所有这些信息将与主机服务器一起在网站上,但不在本地。
将我在本地创建的网站连接到中央的mssql服务器的最佳方法是什么。我希望能够转到asp.net配置并管理用户,但我希望将数据保存在mssql服务器上的表中,而不是aspnetdb.mdf文件中。
我已经使用aspnet_regsql.exe文件在mssql服务器上创建了asp.net成员资格表。
更新:
没关系,我找到了解决这个问题的方法。
只需添加
<remove name="LocalSqlServer"/>
在<ConnectionStrings>
然后我自己的连接字符串。现在它的工作......
答案 0 :(得分:4)
Visual Studio SDK中有一个名为“aspnet_regsql”的行命令。它会打开一个窗口,您可以使用它在任何SQL Server数据库中设置ASP.NET成员资格,角色和配置文件支持。
对于大多数应用程序,您可能最终会编写自己的成员资格管理页面。它并不难,您需要的大多数控件都在Visual Studio的工具箱中。这是我在安全性演讲中给出的食谱:
将ASP.NET成员资格和角色添加到现有SQL Server数据库:
打开Visual Studio 2008命令窗口。
(如果必须在管理员模式下运行SQL行命令,则需要 以管理员模式打开命令行,然后将路径设置为 包括Visual Studio SDK可执行文件。)
在该命令窗口中运行aspnet_regsql。
对于将使用数据库的SQL用户登录,请添加一个或多个 以下成员资格提供者角色:
aspnet_Membership_FullAccess - 如果用户可以注册自己或其他人 aspnet_Membership_BasicAccess - 用户无法注册自己 aspnet_Membership_ReportingAccess - 用于会员统计
对于SQL用户登录,请添加以下一个或多个角色提供程序角色:
aspnet_Roles_FullAccess - 创建和删除角色 aspnet_Roles_BasicAccess - 使用asp.net角色
使用SQL Server Management Studio配置初始应用程序和角色:
exec aspnet_Applications_CreateApplication @ ApplicationName ='Northwind',@ ApplicationID =''
exec aspnet_Roles_CreateRole @ ApplicationName ='Northwind',@ RoleName ='Employee'
exec aspnet_Roles_CreateRole @ ApplicationName ='Northwind',@ RoleName ='Manager'
exec aspnet_Roles_CreateRole @ ApplicationName ='Northwind',@ RoleName ='Master'
实施“新用户”页面,但不要使用表单授权将其锁定。 假设您已经存在用户记录,您可能希望实现自己的表单 在您的数据库中,并假设您想要添加角色作为“创建用户”的一部分 处理。无论如何,使用此页面为ASP.NET创建一组初始用户 会员资格;这种方式比尝试使用存储过程更容易。 请参阅示例代码,了解不使用ASP.NET的用户创建实现 LoginView控件。
请注意,示例应用程序中的“添加用户”页面假定了许多内容 ASP.NET中的标准Login控件很难做到这一点。如果您正在创建用户 作为一种管理功能,你可能不是让用户自己添加 想要拥有多个角色,并且能够选择角色。更重要的是, 您可能已在数据库中建立了“用户”表,并且需要进行集成 “新用户”功能,可将记录添加到应用程序的用户表中。这是 用于创建自己的Login控件,收集其他数据和的原型 集成用户记录,ASP.NET成员资格记录和ASP.NET角色的创建 分配。所有这些都是在环境事务中完成的,因此它们要么成功 或作为一个单一的工作单位失败。
创建用户并将其添加到角色后,您可以设置表单身份验证 并锁定需要授权的页面。注意:
一个。不要求对顶级目录进行身份验证。此级别的页面 应该是公开的。 湾在页面需要身份验证的每个子目录中添加web.config。 通常,设置身份验证级别将是这些中唯一的功能 web.config文件。