PrincipalPermission vs. web.config для контроля доступа к странице - PullRequest
2 голосов
/ 13 июля 2010

У меня сейчас есть права доступа в web.config:

 <location path="Account">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
 </location>
 ...

Мне это не нравится по двум причинам:

  1. web.config становится беспорядком, посколькусоздание веб-сайта
  2. Я не уверен, что это хорошая безопасность - держать правило доступа к веб-странице в стороне от самой страницы.В конце концов, я редактирую файлы aspx / c # большую часть дня, а не web.config, так что все меняется.
  3. Это очень странно ... Я только добавил маршрутизацию ASP.NET4, которая меняетURL.Итак, внезапно мои разрешения web.config перестали действовать!Аналогично пункту 2 выше.

Я думал, что было бы лучше просто использовать PrincipalPermission в качестве атрибутов безопасности для файлов классов / c #, участвующих в каждой aspx.Мой вопрос:

  • Это кто-нибудь делает или это плохие идеи?
  • Что еще более важно ... Мой атрибут PrincipalPermission генерирует исключение (хорошо), но не перенаправляет пользователейвернуться на страницу входа (плохо).Можно ли это исправить?

Ответы [ 3 ]

0 голосов
/ 30 января 2011

Основные разрешения кажутся хорошей идеей на первый взгляд. Но, пройдя этот путь, компромиссы становятся намного, гораздо более уродливыми, чем любой огромный объем конфигурации, который вы можете получить, используя «нормальные» методы безопасности. ИМХО, самый большой недостаток заключается в том, что они создают минное поле потенциальных исключений для тех, кто следует за вами, должен обойти. Вся ваша безопасность становится довольно жестко закодированной, поскольку они являются атрибутами времени компиляции, поэтому вы не можете легко связать их с настройками конфигурации во время выполнения. И что происходит с теми сценариями реального мира, где есть исключения из каждого правила?

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

0 голосов
/ 23 апреля 2013

Я только что опубликовал ответ на другой вопрос здесь .

Я не хотел использовать web.config для авторизации, поэтому я придумал реализацию, подобную MVC, с использованием атрибута и пользовательского принципала.

0 голосов
/ 29 января 2011

Я знаю одну хитрость, которая может оказаться полезной - если вы помещаете свои страницы в отдельные папки, вы можете иметь локальный файл web.config для каждой папки. Не требуется включение в глобальную веб-конфигурацию. См. Строку таблицы «Подкаталог приложения ASP.NET» в разделе «Параметры конфигурации» здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...