Как сделать ASP.NET MVC View небезопасным с помощью тега местоположения в Web.Config - PullRequest
2 голосов
/ 11 октября 2010

У меня есть следующие настройки авторизации в моем web.config:

 <authorization>
      <deny users="?" />
 </authorization>

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

У меня есть одно дополнительное действие, которое я хотел бы опубликовать в дополнение к странице входа. Это конкретное действие не имеет атрибута авторизации. Я попытался сделать это представление (представление resetPassword) общедоступным с помощью тега location в файле web.config, например:

 <location path="Account/ResetPassword" allowOverride="false">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

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

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

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</configuration>

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

1 Ответ

3 голосов
/ 11 октября 2010

Вы можете удалить тег авторизации из веб-конфигурации и просто использовать атрибут авторизации.Действие без набора атрибутов Authorize будет общедоступным.

У меня была такая же проблема некоторое время назад.Пожалуйста, посмотрите на этот вопрос и ответы на него

Если вы хотите сделать это с помощью веб-конфигурации, используйте код, подобный этому

<!-- Allow access to _assets directory -->
<location path="_assets">
    <system.web>
       <authorization>
           <allow users="?"/>
       </authorization>
    </system.web>
</location>

используете "*", но вы должны использовать "?";)

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