Перенаправить пользователя на несколько страниц входа в систему, используя членство в ASP.NET - PullRequest
2 голосов
/ 08 февраля 2009

Перенаправить пользователя на страницу входа в зависимости от папки, в которой он находится. У меня есть веб-приложение с корневым каталогом, которое используется всеми пользователями и администратором сайта.

Для людей, которым требуется аутентифицированная функциональность сайта, они должны будут войти в систему и быть перенаправлены в root / login.aspx. Однако, когда администратору необходимо войти в корневой каталог / admin / раздел сайта, я хочу, чтобы он был перенаправлен в форму входа в root / admin / login.aspx

  <configuration>
      <appSettings/>
      <connectionStrings/>
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </configuration>

У меня есть этот файл в корневом каталоге / admin. Я попытался добавить следующую строку, но выдает ошибку.

  <authentication>
    <forms defaultUrl="default.aspx" loginUrl="default.aspx"></forms>
  </authentication>

Обычно я пытаюсь переписать defaulturl и loginurl, которые существуют в основном приложении.

1 Ответ

9 голосов
/ 08 февраля 2009

Вам необходимо использовать элемент <location> в вашем файле web.config. Вы можете использовать тег <location> для применения настроек авторизации к отдельному файлу или каталогу.

<location path="/root">
  <system.web>
      <authentication mode="Forms" >
        <forms name="LoginForm" defaultUrl="default.aspx" 
        loginUrl="/root/login.aspx" protection="Encryption" 
        timeout="30" path="/"/>
      </authentication>
    <authorization>
      <allow users="?" />
    </authorization>
  </system.web>
</location>
<location path="/root/admin">
  <system.web>
    <authentication mode="Forms" >
      <forms name="formName" defaultUrl="login.aspx" 
      loginUrl="/root/admin/login.aspx" protection="Encryption"
      timeout="30" path="/"/>
    </authentication>
    <authorization>
      <allow users="?" />
    </authorization>
  </system.web>
</location>

* MSDN 1007 *

Для централизованного администрирования, настройки могут быть применены в Файл Machine.config. Настройки в определение файла Machine.config политика всей машины, а также может быть используется для применения конкретного приложения настройка с использованием <location> элементы. Разработчики могут предоставить файлы конфигурации приложения для переопределить аспекты машинной политики. Для веб-приложений ASP.NET: Файл Web.config находится в виртуальный корневой каталог приложения и необязательно в подкаталогах под виртуальным корнем.

Если вам нужно 1 место входа и разные уровни доступа, вы можете использовать роли .

<location path="/root">
  <system.web>
    <authorization>
       <allow roles="admin,root" />/*admin, root is allowed */
       <deny users="*" /> 
   </authorization>
  <system.web>
</location>  

<location path="/root/admin">
  <system.web>
    <authorization>
       <allow roles="admin" />/*admin is allowed */
       <deny users="*" /> 
   </authorization>
  <system.web>
</location>  

Пользователи могут принадлежать более чем одному роль. Например, если ваш сайт дискуссионный форум, некоторые пользователи могут быть в роли обоих членов и Модераторы. Вы можете определить каждую роль иметь разные привилегии на сайт, и пользователь, который в обеих ролях будет иметь оба набора привилегии.

Вы можете получить доступ ко всем этим элементам на уровень кода, если вы хотите манипулировать ролями / аутентификацией программно

Page.User.Identity.Name
Page.User.Identity.IsAuthenticated
Page.User.Identity.AuthenticationType
Page.User.IsInRole("string");

Учебники

4 парня из Rolla Tutorial

Демистифицирован файл ASP.NET web.config

...