[ASP.NET 2.0 Security FAQs]如何设置SQL Server或SQL Express数据库,使其支持Membership、Profiles和Role

时间:2022-02-19 12:44:09

[ASP.NET 2.0 Security FAQs]目录

原文链接

翻译:2005-12-10   by Jackei Lin

ASP.NET 2.0 中的Membership, Profiles 和Role需要把相关信息存储到数据源中. 这几项特性的默认的provider分别是 SqlMembershipProvider, SqlProfileProvider 和 SqlRoleProvider.

如果你没有配置使用特别的provider, 你的程序就会使用以上默认的provider. 当你的程序第一次调用某个默认的provider时, ASP.NET会自动在App_Data 目录下新建一个SQL Express database用于存储所需的信息.

如果你想使用特定的SQL Server或SQL Express database server, 你必须配置你的程序以提供provider 所需的调用特定数据库的信息. 除此之外你必须配置相关的数据库.

使用Aspnet_regsql.exe来创建或配置特定的数据库.例如, 在命令行工具(cmd)里执行如下的指令:

 aspnet_regsql -S (local) -E -A mpr

-S  指派特定的数据库服务器, 在这个例子里是(local).

-E  使用Windows信任连接连接相关SQL Server服务器.

-A mpr  添加相关支持,为:m: membership,p: profiles, r: roles.

执行Aspnet_regsql /?,你可以得到所有相关命令的列表.

Aspnet_regsql 配置成功的aspnetdb(或其他)数据库是使用数据库角色(database roles)来控制书库访问的. 你必须让运行ASP.NET 程序的帐号能够访问aspnetdb数据库,这样你的程序才能使用数据库中的相关信息. 例如, 在SQL Query Analyzer里执行以下语句,使Network Service帐号能够造作相关的数据:

 --为Network Service帐号创建一个SQL Server登陆
 sp_grantlogin 'NT AUTHORITY\Network Service'
 --允许帐号访问membership数据库
 USE aspnetdb
 GO
 sp_grantdbaccess 'NT AUTHORITY\Network Service', 'Network Service'
 --把用户添加到数据角色
 USE aspnetdb
 GO
 sp_addrolemember 'aspnet_Membership_FullAccess', 'Network Service'


译者注:aspnet_regsql.exe位于C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 目录下,它还可以用来配置数据库以用于存储session。

其他相关资料:
Configuring ASP.NET 2.0 Application Services to use SQL Server 2000 or SQL Server 2005  by Scott Guthrie
中文: 将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005