Рол-провайдер, использующий web.config? - PullRequest
1 голос
/ 14 января 2010

Я создаю крошечное веб-приложение с простой схемой аутентификации пользователя. Я регистрирую пользователей в 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 ]

3 голосов
/ 18 февраля 2010

Я создал базовую реализацию iRoleProvider, которая использует web.config для хранения. Проверьте это на Codeplex, Web.Config Role Provider .

1 голос
/ 14 января 2010

Похоже, что это было решено ранее: Добавление роли для пользователя, созданного в 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 для покрытия ролей.

...