ASP.NET MVC 3 ошибка при использовании проверки подлинности форм - PullRequest
0 голосов
/ 13 мая 2011

Я использую аутентификацию по формам для моего приложения MVC 3.Я добавил эту строку в мою конфигурацию:

<authorization>
<allow roles="Administrator"/>
<deny users="*"/>
</authorization>

Когда я запускаю приложение (на моем локальном ящике), я получаю ошибки, перечисленные ниже, и ни один из стилей CSS не проходит.Но когда я вхожу, все выглядит нормально.Поэтому у меня есть пара вопросов:

  1. Рекомендуется ли добавлять правила авторизации в web.config или добавить их в атрибут [Authorize] в контроллере.
  2. Я получаю ошибки, перечисленные ниже, только когда добавляю правила авторизации в web.config.Чего мне не хватает?

Помощь будет принята с благодарностью.Спасибо.

ps Я использую Internet Explorer 8

Сведения об ошибке веб-страницы

Пользовательский агент: Mozilla / 4.0 (совместимый; MSIE 8.0; Windows NT 5.1; Trident /4.0; GTB6.5; .NET CLR 2.0.50727; InfoPath.2; .NET4.0C; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Отметка времени: пт, 13 мая 2011 г. 15:48:19 UTC

Сообщение: синтаксическая ошибка Строка: 1 символ: 1 код: 0 URI: http://localhost:1361/Account/LogOn?ReturnUrl=%2fScripts%2fjquery-1.4.4.min.js

Сообщение: синтаксическая ошибка Строка: 1 символ: 1 код: 0 URI: http://localhost:1361/Account/LogOn?ReturnUrl=%2fScripts%2fjquery.validate.min.js

Сообщение: синтаксическая ошибка Строка: 1 символ: 1 код: 0 URI: http://localhost:1361/Account/LogOn?ReturnUrl=%2fScripts%2fjquery.validate.unobtrusive.min.js

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

В вашем web.config вы ограничиваете доступ для всех, кроме администраторов во всех случаях. Проверьте эту ссылку, чтобы дать вам больше возможностей для того, что вы можете сделать. (например, разрешение доступа к определенным папкам)

http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx

1 голос
/ 13 мая 2011

Проблема, как вы уже догадались, в том, что файлы CSS защищены вашими правилами авторизации. Причина, по которой это отличается между применением правил в web.config и применением с помощью атрибутов Authorize, заключается в том, что поскольку среда MVC не отправляет запросы на файлы, которые существуют на диске, через ваши контроллеры, запросы на файлы CSS (которые существуют на диске) никогда не видят атрибута. Однако они видят правила авторизации в web.config.

Есть несколько способов решить эту проблему. Либо один будет работать нормально.

  1. Используйте тег <location>, чтобы разрешить пользователям запрашивать ваши CSS-файлы.
  2. Пропустить авторизацию в web.config и использовать вместо нее атрибут Authorize. Если вы сделаете это, вы можете применить атрибут глобально в global.asax.cs, поэтому вам не нужно будет помнить, что вы делали это на каждом контроллере.
...