Использование ролевой аутентификации без таблицы членства

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

Но я бы хотел ограничить определенные страницы определенными ролями. Например, страница «просмотр журналов».

Я думаю, что мой файл web.config должен выглядеть так:

<location path="logs/view/">
<system.web>
  <authorization>
    <allow roles="super, admin"/>
  </authorization>
</system.web>

But my issue is that, the way the underlying application is built, when user logs in successfully via an api call I am returned a "User" onbject and that user's role is part of that object (User.Role == "admin"). I don't really have a reference database table that tells the APP what role a user has.

Как я могу связать

<allow roles="super, admin"/> 

бит в моем webconfig для свойства роли объекта User?


person PercivalMcGullicuddy    schedule 16.08.2012    source источник


Ответы (2)


Вы можете подключиться к событию AuthenticateRequest из экземпляр HttpApplication в вашем global.asax. В этом контексте вам необходимо настроить IPrincipal реализацию на требуемые параметры. Самый простой способ сделать это - создать экземпляр RolePrincipal и установив свойство User для HttpContext.

Обновление. Я только что просмотрел несколько примеров реализации, опубликованных в предыдущих ответах. Один основан на ASP.NET MVC, а другой - на веб-формах.

person smartcaveman    schedule 16.08.2012

используйте настройки на основе местоположения.

<configuration>
   <location path="Logon.aspx">
      <system.web>
         <authorization>
            <allow users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>

для получения дополнительной информации вы можете пройти через MSDN

person JSJ    schedule 16.08.2012