MVC3 <authentication>и <authorization>внутри атрибута <location> - PullRequest
2 голосов
/ 03 апреля 2012

Я новичок в .NET и MVC3, и в настоящее время я нахожусь в процессе преобразования старого классического сайта ASP в сайт приложения MVC3.

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

<authentication mode="Forms">
  <forms loginUrl="~/Account/Logon" timeout="2880" />
</authentication>

Вместо этого я хотел бы иметь возможность настроить Области внутри моего приложения, а затем использовать <location> атрибут для настройки правил аутентификации и авторизации для каждого.Так, например:

<location path="AreaName">
 <system.web>
  <authentication mode="Forms">
    <forms loginUrl="~/AreaName/Login" timeout="15" />
  </authentication>
  <authorization>
    <deny users="?"/>
  </authorization>
 </system.web>
</location>

Если я удаляю эти три строки:

  <authentication mode="Forms">
    <forms loginUrl="~/AreaName/Login" timeout="15" />
  </authentication>

Затем, когда я пытаюсь получить доступ к любому из представлений в пути «AreaName», я перенаправляется первымВернуться к ~ / Аккаунт / LogOn.Если я вставлю эти три строки обратно, я получу следующую ошибку:

Сообщение об ошибке синтаксического анализатора: Ошибка использования раздела, зарегистрированного как allowDefinition = 'MachineToApplication', за пределамиуровень приложения.Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS.

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

Надеюсьне понимаю, почему у меня не может быть <authentication> свойства внутри <location>.Любая помощь по этому вопросу была бы очень признательна.

Я прошу прощения, если я неправильно сформулировал любой из этих вопросов.

1 Ответ

0 голосов
/ 03 апреля 2012

Возможно, вам понадобится пользовательский поставщик членства и пользовательский поставщик ролей (при необходимости) ... вот пример сообщения Пользовательские поставщики членства в ASP.NET ... Если вас беспокоит уровеньдоступ вам потребуется для использования провайдера пользовательских ролей ...

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