如何:将 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 中。

配置角色提供程序

  1. 在 Web.config 文件中的 <system.web> 元素下,添加一个 <roleManager> 元素,并将其 enabled 特性设置为 true

  2. defaultProvider 属性设置为 SqlRoleProvider

  3. <roleManager> 元素子级的形式添加一个 <providers> 元素。

  4. <providers> 元素子级的形式添加一个 <add> 元素,该元素的以下特性设置为适当的值:nametypeconnectionStringNameapplicationName,如下面的示例中所示。

    <!-- 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>
    

将服务配置为使用角色提供程序

  1. 在 Web.config 文件中,添加一个 <system.serviceModel> 元素。

  2. 将一个 <behaviors> 元素添加到 <system.ServiceModel> 元素中。

  3. 将一个 <serviceBehaviors> 添加到 <behaviors> 元素中。

  4. 添加一个 <behavior> 元素,并将 name 特性设置为适当的值。

  5. 将一个 <serviceAuthorization> 添加到 <behavior> 元素中。

  6. principalPermissionMode 属性设置为 UseAspNetRoles

  7. roleProviderName 属性设置为 SqlRoleProvider。 下面的示例演示此配置的一个片段。

    <behaviors>
     <serviceBehaviors>
      <behavior name="CalculatorServiceBehavior">
       <serviceAuthorization principalPermissionMode ="UseAspNetRoles"
                             roleProviderName ="SqlRoleProvider" />
      </behavior>
     </serviceBehaviors>
    </behaviors>
    

另请参阅