Как реализовать авторизацию страниц в ASP.NET с использованием хранилища SQL вместо web.config? - PullRequest
2 голосов
/ 12 февраля 2010

Например, то, как мы сейчас это делаем, выглядит так: (в web.config)

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

И вместо этого я хотел бы где-то хранить эту информацию в SQL, чтобы нам было легче манипулировать информацией. Но мы хотим сохранить ту же функциональность, которую предоставляет информация в web.config, точно так же, как мы можем использовать SqlRoleProvider вместо жесткого кодирования ролей в приложении. Другими словами, если пользователь в настоящее время пытается перейти к «somePath», и он не является членом «VerifiedRoles», он перенаправляется обратно в default.aspx, а если он является членом «ApproRoles», то он получает стр. Я хочу сделать то же самое, но без использования web.config в качестве механизма авторизации.

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

Есть идеи? Возможно ли это с помощью класса «Провайдер»? Я просто ищу указатели на то, что унаследовать, и, возможно, некоторую техническую документацию. В связи с этим мне не хватает моего googlefoo, так как я не знаю, куда указывать. Я действительно только ищу AzMan? Эта локация авторизации через SQL уже определена где-то в aspnetdb по умолчанию, и мне ее не хватает?

Кстати, этот вопрос уже задавался на SO, и я пропустил его? Что бы вы гуглили?

Ответы [ 3 ]

2 голосов
/ 12 февраля 2010

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

1 голос
/ 16 мая 2010

Azman может иметь базу данных SQL в качестве хранилища данных начиная с Windows Server 2008 и SQL Sever 2008. Я хотел бы использовать Azman, если у меня нет подключения к устаревшим приложениям, которые необходимо перенести на новые серверы.

Подключение к хранилищу авторизации на основе SQL

1 голос
/ 12 февраля 2010

Лучше всего обработать событие HttpApplication.AuthorizeRequest. На этом этапе объект HttpContext.User установлен, и вы можете выполнять любой анализ, например, проверяя таблицу базы данных по HttpContext.User.IsInRole и текущему пути запроса.

...