Проверка подлинности Asp.net - PullRequest
5 голосов
/ 10 декабря 2010

Я работаю над приложением Asp.net, где у меня 4 роли в приложении.1. Администратор 2. Пользователь 3. Реселлер 4. Партнер.И я использую проверку подлинности формы для этого все работало нормально для одной роли (пользователь).Но сейчас у меня 4 роли, и я не понимаю, как справиться с этим.У меня есть 4 папки для разных пользователей.Если я войду в систему с учетной записью посредника, и если я изменю URL для пользователя, то это позволит мне также получить доступ к пользовательской части.Но я не хочу этого.Мне нужно в моем приложении, чтобы пользователь мог получить доступ только к своей области доступа.Значит, если ваш посредник вошел в систему, то он может получить доступ только к страницам посредника или к той же папке, и ничего больше.

Пожалуйста, помогите мне найти это решение.

Ответы [ 5 ]

1 голос
/ 10 декабря 2010

Вы можете использовать web.config, чтобы установить разрешение, или вы также можете получить более детальный и украсить класс или метод, который вы хотите заблокировать, следующим образом:

[PrincipalPermissionAttribute(SecurityAction.Demand, Role = @"Administrators")]

Все это является частью менеджера ролей, который вы можете настроить. Начните с чтения этой статьи, в которой объясняется, что делать.

1 голос
/ 10 декабря 2010

Здесь есть две вещи. Прежде всего, ограничение доступа к каждой папке по роли должно быть достаточно простым, если вы используете <location> элементы в вашем web.config, например,

<location path="Resellers">
    <system.web>
        <authorization>
            <allow roles="Reseller"/>
            <deny roles="*"/>
       </authorization>
    </system.web>
</location>

<location path="Users">
    <system.web>
        <authorization>
            <allow roles="User"/>
            <deny roles="*"/>
       </authorization>
    </system.web>
</location>
...

Также на ваших отдельных страницах вы можете вызвать функцию IsUserInRole, чтобы проверить, есть ли у вашего пользователя правильная роль для доступа к странице.

Возможно, вы захотите получить копию Начиная с ASP.NET Security , у него есть отличная информация о том, как это сделать.

0 голосов
/ 10 декабря 2010

используйте, как показано ниже:

<location path="Users">
        <system.web>
            <authorization>
                <allow roles="Users"/>
                <deny users="*"/>
            </authorization>
        </system.web>
    </location>
0 голосов
/ 10 декабря 2010

В каждую из папок необходимо поместить файл web.config, который ограничивает доступ к рассматриваемой роли.Например, в папке посредников у вас есть файл web.config, содержащий:

<authorization>
  <deny users="*"/>
  <allow roles="Resellers"/>
</authorization>

И так далее для других папок.

0 голосов
/ 10 декабря 2010

Вам необходимо установить соответствующие параметры аутентификации в файле web.config для каждой папки, к которой вы ограничиваете доступ, т. Е.

<authorization>
  <deny users="?" />
  <allow roles="Administrators" />
  <deny users="*" />
</authorization>

Разрешит доступ только проверенным пользователям с ролью «Администраторы».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...