2013-05-24 5 views
0

У нас есть большое приложение ASP.NET, к которому мы добавляем новые «страницы» с использованием MVC3 и совсем недавно MVC4. Теперь я хочу защитить страницы MVC4 с помощью атрибута AllowAnonymous в действиях контроллера.Может ли MVC4 AllowAnonymous сосуществовать с форматами asp.net?

web.config, содержит элемент, таким образом, авторизации: <authorization> <deny users="?"/> <allow users="*"/> </authorization>

Это заботится о страницах ASP.NET. Но, к сожалению, это также отрицает атрибут AllowAnonymous для приложений MVC4. Если я удалю элемент авторизации, то auth MVC4 работает (как с веб-сайтом шаблона VS2012 MVC4), но, удалив его, страницы ASP.Net больше не защищены.

Неужели кто-нибудь имел успех с решением, которое содержит как страницы Asp.Net, так и MVC4?

+0

Вы используете аутентификацию по форме? – Fals

+0

Да, я использую Autodesk Forms - это было первоначально настроено для страниц Asp.Net. Это выглядит так: ' ' – Bonneville

ответ

0

Как я понимаю, для страниц ASP.Net создается отдельная папка и файл web.config. То же самое для страниц MVC, создайте отдельную папку и файл web.config. затем добавьте атрибут авторизации, как вам нужно для каждого. Такие, как

<authorization> 
      <deny users="?" /> 
     </authorization> 
    Or 
<authorization> 
     <allow users="*" /> 
    </authorization> 
+0

Я использую это подход, а также с использованием элемента местоположения в web.config следующим образом: ' <разрешение> <разрешить пользователям = "*"/> ' Но использование мест папок не является способом предоставления полномочий для действий MVC, которые не являются местоположениями. Я хочу включить атрибут MVC4 AllowAnonymous - и он будет сосуществовать с страницами Asp.Net. – Bonneville

0

Я считаю, что у меня есть решение этой проблемы. Первоначально, для Asp.Net, я был белым, перечисляя несколько страниц, к которым можно было получить доступ, без необходимости входа в систему. То есть я установил <deny users="?"/> в основной файл web.config, а затем я использовал элемент location для <allow users="*"/> для путей, которые не требуется авторизация. Чтобы использовать авторизацию MVC4 и чтобы она сосуществовала с аутентификацией Asp.Net Forms, я предлагаю обратный подход, который должен обеспечить доступ ко всем пользователям, а затем черный список путей [папок] страниц Asp.Net которые требуют авторизации в web.config. Это позаботится о страницах Asp.Net. Для кода MVC4 методы Controller/Action теперь могут использовать новые атрибуты Authorize и AllowAnonymous. Это на самом деле то, как чистое приложение MVC4 будет работать в любом случае; в главном web.config не будет <deny users="?"/>, и атрибут Authorize будет использоваться для обеспечения безопасности. Поэтому вместо того, чтобы думать о преобразовании моего приложения Asp.Net, чтобы он работал с MVC4, я подумал о том, как изменить приложение MVC4, чтобы оно могло размещать страницы Asp.Net. Я хотел бы знать, есть ли предпочтительный способ сделать это, поэтому, пожалуйста, прокомментируйте, если у вас есть предложение.

Смежные вопросы