如何:将 ASP.NET 角色提供程序与服务一起使用
ASP.NET 角色提供程序(与 ASP.NET 成员资格提供程序一起提供)是一种可供 ASP.NET 开发人员创建网站的功能,这些网站允许用户通过网站创建帐户并向用户分配用于授权的角色。借助此功能,任何用户都可以通过网站建立帐户,并登录以获取该网站及其服务的独占访问权。这与要求用户在 Windows 域中具有帐户的 Windows 安全完全不同。所有提供凭据(用户名/密码组合)的用户都可以使用该站点及其服务。
有关示例应用程序,请参见成员资格和角色提供程序。有关 ASP.NET 成员资格提供程序功能的更多信息,请参见如何:使用 ASP.NET 成员资格提供程序。
角色提供程序功能使用 SQL Server 数据库存储用户信息。Windows Communication Foundation (WCF) 开发人员可以利用这些功能实现安全性。当集成到 WCF 应用程序中时,用户必须向 WCF 客户端应用程序提供用户名/密码组合。若要让 WCF 使用该数据库,您必须创建 ServiceAuthorizationBehavior 类的一个实例,将其 PrincipalPermissionMode 属性设置为 UseAspNetRoles,并将行为集合的实例添加到承载服务的 ServiceHost 中。
配置角色提供程序
在 Web.config 文件中的 <system.web> 元素下,添加 <roleManager> 元素,并将其 enabled 属性设置为 true。
将 defaultProvider 属性设置为 SqlRoleProvider。
添加一个 <providers> 元素,将其作为 <roleManager> 元素的子级。
按照下面的示例所示,添加 <add> 元素(其 name、type、connectionStringName 和 applicationName 属性设置为相应的值),将其作为 <providers> 元素的子级。
<!-- Configure the Sql Role Provider. --> <roleManager enabled ="true" defaultProvider ="SqlRoleProvider" > <providers> <add name ="SqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="SqlConn" applicationName="MembershipAndRoleProviderSample"/> </providers> </roleManager>
将服务配置为使用角色提供程序
在 Web.config 文件中,添加 <system.ServiceModel> 元素。
向 <system.ServiceModel> 元素中添加一个 <behaviors> 元素。
向 <behaviors> 元素中添加一个 serviceBehaviors section。
添加 Behavior element 元素并将 name 属性设置为适当的值。
向 <behavior> 元素中添加一个 <serviceAuthorization> element。
将 principalPermissionMode 属性设置为 UseAspNetRoles。
将 roleProviderName 属性设置为 SqlRoleProvider。下面的示例演示此配置的一个片段。
<behaviors> <serviceBehaviors> <behavior name="CalculatorServiceBehavior"> <serviceAuthorization principalPermissionMode ="UseAspNetRoles" roleProviderName ="SqlRoleProvider" /> </behavior> </serviceBehaviors> </behaviors>