Где в конвейере ASP.NET подключается RoleProvider? - PullRequest
1 голос
/ 27 мая 2011

Единственное, что я знаю о том, что RoleProvider используется, это когда вы используете атрибут Authorize.Где еще я могу использовать RoleProvider и вызывается ли он где-либо, кроме мест, где я могу конкретно ссылаться на роли (я думаю, что аналогично тому, как элементы управления Login автоматически используют MembershipProvider)

Сказано иначеЯ пишу свой собственный уровень управления ролями, но не реализую фактический RoleProvider контракт, какие встроенные функции в ASP.NET я буду упускать?

Ответы [ 2 ]

2 голосов
/ 27 мая 2011

Вот несколько способов, которыми встроенный RoleProvider добавляет значение:

1: элемент управления LoginView использует роли, позволяющие отображать разный контент для разных ролей.Для этого он подключится к RoleProvider.

Пример использования ролей с элементом управления LoginView:

<asp:LoginView id="LoginView1" runat="server">
    <RoleGroups>
        <asp:RoleGroup Roles="author">
            <ContentTemplate>
                some content here based on if user is in 'author' role....
            </ContentTemplate>
        </asp:RoleGroup>
        <asp:RoleGroup Roles="editor">
            <ContentTemplate>
                some content here based on if user is in 'editor' role....
            </ContentTemplate>
        </asp:RoleGroup>
    </RoleGroups>
</asp:LoginView>

2: Вы можете предоставить доступ к физическим путям всервер (то есть подпапки и т. д.) с помощью настроек web.config, таких как:

<configuration>
  <location path="MemberPages">
    <system.web>
      <authorization>
        <allow roles="members, administrators" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <!-- other configuration settings here -->
<configuration>

3: вы можете легко определять роли пользователя и выполнять действия в коде, например:

if (User.IsInRole("members"))
{
   //do something
}
else
{
   //do something else
}

Список можно продолжать и продолжать.Это обсуждение, честно говоря, было много раз - не изобретайте велосипед, создавая свою собственную систему ролей.Просто внедрите абстрактный поставщик ролей и покончим с этим.Вот хорошая статья на фоне Управление ролями в ASP.NET .

РЕДАКТИРОВАТЬ: После того, как вы пояснили, вы действительно хотите знать, как RoleProvider приносит вам пользу MVC , вот что вы ищете:

ASP.NET MVC - альтернатива провайдеру роли?

0 голосов
/ 30 мая 2011

Прямой ответ на ваш вопрос будет " Нет ".RoleProvider или любой другой поставщик не участвуют в конвейере основного потока запросов ASP.Net, и ASP.Net не требует никакого RoleProvider для выполнения запроса.

Вместо того, чтобы помещать технические материалы, я бы ответил наболее философский ответ и уважайте усилия, приложенные КП в ответе.

RoleProvider - это функциональное дополнение к ASP.Net, которое позволяет вам работать против вашей системы ролей без необходимости знать какие-либо функциональные детали ввремя выполнения.ASP.Net 2.0 представил совершенно новый способ работы с пользователями и ролями.Вместо того, чтобы обеспечить интегрированное управление пользователями и ролями, они решили сделать его расширяемым и простым в использовании.Они создали новый шаблон под названием «Поставщик» и отправили поставщиков по умолчанию для каждой функции, например, пользователя, роли и сеанса.Они известны как MembershipProvider, RoleProvider и SessionProvider.Однако Microsoft не ограничивает вас в использовании только тех поставщиков, которые поставляются с ASP.Net 2.0.Вы можете определить свой собственный MembershipProvider и объявить их в web.config в качестве поставщика по умолчанию.Класс ProviderBase заставит вас реализовать каждый метод, чтобы позволить вашему представлению работать согласованно, и когда вы устанавливаете их по умолчанию из web.config, во время выполнения вам не нужно знать детали любого целевого провайдера, который у вас может быть в системе.Код клиента согласован для любого конкретного поставщика.

Надеюсь, это поможет.

...