защита страниц в папке с ролями пользователей?

Я управляю разными страницами ролей в разных папках в своем приложении. В папке admin есть все страницы admin. Пользователь имеет все страницы вошедшего в систему пользователя.

Пожалуйста, посоветуйте, как мне следует проверить, что пользователь действителен и имеет правильные разрешения?

Я думал, что мне следует использовать переменные сеанса, так как когда пользователь входит в систему, я сохраняю его идентификатор и тип пользователя в сеансе. Может ли быть какой-то более элегантный и требующий меньшего количества кода способ?

Страница, на которой пользователь входит в систему, представляет собой страницу сведений с почти 25 полями и имеет проверки ajax, а также другие проверки на стороне клиента и сервера.

Я мало знаю о провайдерах членства на asp.net и никогда ими не пользовался. Пожалуйста, если вы что-то посоветуете, дайте мне какую-нибудь ссылку или ключевое слово, чтобы посмотреть дальше.

Спасибо


person user576510    schedule 04.07.2011    source источник


Ответы (2)


Вы можете легко управлять такой конфигурацией в файле web.config. Просто добавьте в раздел configuration файла web.config.

<location path="Admin">
  <system.web>
    <authorization>
        <deny users="?"/>               
        <allow roles="Administrator"/>
    </authorization>
  </system.web>
</location>

<deny users="?"/> означает, что неавторизованный пользователь не сможет получить доступ к Admin папке

Пример с другой папкой, которую вы хотите разрешить, которая имеет Manager Role:

<location path="ManagerFolder">
  <system.web>
    <authorization>
        <deny users="?"/>               
        <allow roles="Manager"/>
    </authorization>
  </system.web>
</location>
person Muhammad Akhtar    schedule 04.07.2011
comment
Ахтар, спасибо, пожалуйста, объясните, как это сделать в снарио с пользовательским кодом. Для регистрации я использую собственный код, могу ли я использовать свой собственный код, который сохраняет пользователя в таблице БД? У меня есть столбец ролей в моей базе данных со значениями, но после этих конфигураций, как я буду управлять? Должен ли я сохранить свой тип пользователя в переменной сеанса? Как я могу использовать ваше руководство с моим снарио. Благодарность - person user576510; 04.07.2011
comment
Вы можете использовать like для проверки uesr, если он лежит в определенной роли. если (HttpContext.Current.User.IsInRole(RoleName)) - person Muhammad Akhtar; 04.07.2011
comment
@ Мхуаммад Ахтар, но нужно ли мне указывать тип пользователя в сеансе? - person user576510; 04.07.2011
comment
Извините, я не получаю, какую пользу это принесет, если делать это с помощью пользовательского кода? - person user576510; 04.07.2011