как получить доступ к страницам папки в соответствии с ролями в С # vs2005 в webconfig

Сценарий такой:

Я работаю над ролевым проектом в vs2005 и sql server2005. Я определил роль в базе данных и добавил настраиваемого поставщика ролей. У меня две роли, такие как «администратор» и «пользователь». Я создал в проекте две папки и разместил в них страницы (администратор и пользователь) в соответствии с ролями. Теперь я хочу добавить код в web.config для доступа к страницам в соответствии с ролями, это означает, что администратор может видеть только страницы папок администратора, а пользователь может видеть только страницы папок пользователя.

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

Я использовал тег местоположения вот так

<location path="user/userpage1.aspx">
    <system.web>
      <authorization>
        <allow roles="user"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

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

Обновления Я добавил эти два тега местоположения в свою веб-конфигурацию.

<!--allow admin role members-->
  <location path="admin/adminpage1.aspx">
    <system.web>
      <authorization>
        <allow roles="admin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
<!--allow user role members-->
  <location path="user/userpage1.aspx">
    <system.web>
      <authorization>
        <allow roles="user"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location> 

person Ghost Answer    schedule 04.01.2013    source источник


Ответы (1)


Вам не подходит следующее?

<location path="folder">
    <system.web>
        <authorization>
            <allow roles="user" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

что у меня работает в следующей конфигурации:

<location path="Content/Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
<system.web>
    <authorization>
        <allow roles="Admin,Manager,Client" />
        <deny users="?" />
    </authorization>
</system.web>

разрешить анонимный доступ, хотя в целом это запрещено.


Вы можете поместить в подпапку отдельный файл Web.config, не зависящий от местоположения:

<system.web>
    <authorization>
        <allow roles="user" />
        <deny users="*" />
    </authorization>
</system.web>
person abatishchev    schedule 04.01.2013
comment
@GhostAnswer: Посмотрите мое обновление еще раз. Проверьте, что вы разрешаете / запрещаете в корневой директиве, а что и в зависимости от местоположения. - person abatishchev; 04.01.2013
comment
@GhostAnswer: Что такое корневое пособие? Если это может как-то повлиять на настройки папки. - person abatishchev; 04.01.2013
comment
давайте продолжим обсуждение в чате - person Ghost Answer; 04.01.2013