Членство в ASP.NET: блокировка CSS пользователями Deny, страница отображается неправильно? - PullRequest
8 голосов
/ 17 августа 2010

У меня есть страница, которая функционирует правильно, но когда я выдаю пользователя с запретом на весь сайт, он перенаправляет меня на страницу входа, которая, кажется, работает, но css не работает. Следовательно, нет стайлинга ..

Кто-нибудь может помочь? Мой web.config похож на

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

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

Эта страница входа использует site.master имеет следующую таблицу стилей, но не может оформить документ, если включено вышеприведенное

 <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />

Чтобы подтвердить, я удаляю часть выше в web.config, тогда она работает, следовательно, CSS включен и в стиле бенга

Я подумал, что это может быть связано с отказом в css ... поэтому я включил следующее, но это не имеет значения. Я знаю, что site.master отображается на странице входа в систему, потому что я вижу заголовки и т.д ..

 <location path="~/Content">
   <system.web>
     <authorization>
       <allow users="*" />
     </authorization>
   </system.web>
 </location>

Я также использовал firebug в firefox для просмотра css, если теги авторизации включены в web.config, то там говорится, что CSS нет. Если я уберу теги, я смогу увидеть css, и страница будет отображена правильно.

Я должен что-то упустить. Любая помощь очень ценится

заранее спасибо

EDIT

Фиддлер утверждает, что site.css перемещен ??

HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=utf-8  
Location: /InmoCasaWebClient/Account /LogOn?ReturnUrl=%2fInmoCasaWebClient%2fContent%2fSite.css
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 17 Aug 2010 17:19:12 GMT
Content-Length: 201

<html><head><title>Object moved</title></head><body>

Объект перемещен в здесь .

Ответы [ 6 ]

7 голосов
/ 17 августа 2010

Используйте fiddler , чтобы точно узнать, что происходит с этим ресурсом?Может пролить свет на тайну.Стоит 403, если он не авторизован.Может быть 404ing?Если его нет в виртуальном каталоге, вы можете просто написать:

<link href="/Content/Site.css" rel="stylesheet" type="text/css" />

(обход каталога ненадежен)

Обновление - теперь больше информации

Хорошее использование скрипача;) Во всяком случае, так как он (временно перенаправляет) ваши CSS-файлы тоже требует проверки, проблема заключается в аутентификации ваших форм.

Возможно, вы столкнулись с проблемой runAllManagedModuleForAllRequest = "true".Прочтите этот пост для информации.

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

<location path="Content">             
   <system.web>             
     <authorization>             
       <allow users="*" />             
     </authorization>             
   </system.web>             
 </location> 
5 голосов
/ 29 сентября 2010

У меня была похожая проблема. если это поможет, я добавил разрешение (IUSR или в зависимости от вашей ОС) в корневой веб-каталог, это сработало.

4 голосов
/ 18 августа 2010

302 из среды входа, перенаправляющей вас на вход при запросе CSS.

Хитрость в том, что ваше MVC-приложение не должно настраивать безопасность через web.config, а вместо этого вы должны использовать атрибуты [Authorize] на ваших контроллерах, которые не будут мешать вашему CSS.

3 голосов
/ 17 августа 2010

Попробуйте удалить тильду (~) в атрибуте пути вашего местоположения.Если вы посмотрите на результат fiddler, это запрос обратного вызова для вашего css.таким образом, неаутентифицированный запрос страницы в свою очередь делает неаутентифицированные запросы ресурсов (css).

Обычно я пытаюсь поместить каталог стилей в корень приложения, а затем использовать вспомогательный инструмент, такой как T4MVC или мои собственные вспомогательные методы для перевода и избегания необходимости выяснения сканирования каталога ../../.

2 голосов
/ 18 августа 2010

Для начала избегайте жестко заданных путей к ресурсам, таким как файлы JS или CSS, в представлениях ASP.NET MVC.Использование /Content/Site.css работает не лучше, чем ../../..

Использование помощника Url.Content:

<%=Url.Content("~/public/scripts/jquery-1.4.2.min.js")%>
0 голосов
/ 18 февраля 2013

Вы можете просто разрешить приложению получать доступ к вашему CSS-файлу:

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