使用web.config的角色管理提供程序?

时间:2010-01-14 04:55:00

标签: c# .net asp.net vb.net roleprovider

我正在使用简单的用户身份验证方案构建一个小型Web应用程序。我在web.config中注册用户,如下所示:

<authentication mode="Forms">
  <forms loginUrl="~/login.aspx" defaultUrl="default.aspx" ...>
    <credentials passwordFormat="SHA1">
      <user name="UserA" password="B60D121B438A380C343D5EC3C2037564B82FFEF3"/>
      <user name="UserB" password="B60D121B438A380C343D5EC3C2037564B82FFEF3"/>
    </credentials>
  </forms>
</authentication>

它工作得很好,我喜欢在这个特定的应用程序中必须依赖数据库。但是,我很惊讶地发现你显然无法在同一庄园的web.config中配置角色 - 或者我错过了一些非常明显的东西?

我是否真的必须实现自定义角色管理提供程序才能在web.config中配置我的角色?如果是,您是否碰巧知道任何可用的实现?

2 个答案:

答案 0 :(得分:3)

我已经创建了iRoleProvider的基本实现,它使用web.config进行存储。在Codeplex上查看Web.Config Role Provider

答案 1 :(得分:1)

这似乎已在之前解决过:Adding Role to User Created in Web.config

但是,如果您打算仅在web.config中执行此操作,则您不可能在web.config中创建一个用于您自己的角色设置的部分。

<configuration>
    <configSections>
        <section name="UserRoles" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="true" requirePermission="false"/>
    </configSections>

    <UserRoles>
        <add key="UserA" value="Group1,Group2,Group3" />
        <add key="UserB" value="Group1,Group3" />
    </UserRoles>
<configuration>

然后,您可以使用global.asax使用Application_AuthenticationRequest方法在用户对象中配置角色。我从未尝试过,但我想如果您想在web.config的授权元素中使用这些角色,则需要使用自定义Principal对象来覆盖角色。