ASP.NET-Mitgliedschaft: CSS wird von Deny-Benutzern blockiert, Seite wird nicht korrekt gerendert?

8

Ich habe eine Seite, die richtig funktioniert, aber wenn ich einen verweigerten Benutzer für die ganze Seite ausstelle, leitet er mich auf die Anmeldeseite um, die zu funktionieren scheint, ABER die CSS funktioniert nicht. Daher gibt es kein Styling.

Kann jemand helfen? Meine web.config ist wie folgt

%Vor%

Diese Anmeldeseite verwendet eine Site.master verfügt über das folgende Stylesheet, formatiert das Dokument jedoch nicht, wenn das oben Genannte enthalten ist

%Vor%

Um zu bestätigen, dass ich den obigen Teil in web.config entferne, funktioniert es, daher ist das CSS enthalten und beng gestylt

Ich dachte, es könnte etwas damit zu tun haben, dass das CSS verweigert wird. Also habe ich folgendes hinzugefügt, aber es macht keinen Unterschied. Ich weiß, dass der site.master auf der Anmeldeseite gerendert wird, weil ich die Header etc ..

sehe %Vor%

Ich habe auch Firebug in Firefox verwendet, um die CSS anzuzeigen, wenn die Autorisierungs-Tags in web.config enthalten sind, dann gibt es an, dass es kein CSS gibt. Wenn ich die Tags entferne, kann ich das CSS sehen und die Seite wird korrekt gerendert.

Ich muss etwas verpassen. Jede Hilfe wirklich geschätzt

Danke im Voraus

BEARBEITEN

Fiddler gibt an, dass die site.css verschoben wurde ??

%Vor%

Objekt wurde nach hier verschoben.

    
mark smith 17.08.2010, 15:40
quelle

6 Antworten

3

Versuchen Sie, die Tilda (~) im Pfadattribut Ihres Standorts zu entfernen. Wenn Sie sich das Fiddler-Ergebnis ansehen, ist es eine Rückrufanfrage für Ihr CSS. Daher führt die nicht authentifizierte Anforderung für die Seite wiederum zu nicht authentifizierten Anforderungen für Ressourcen (die CSS).

Ich versuche generell, ein Styles-Verzeichnis im Stammverzeichnis der Anwendung zu platzieren und dann ein Hilfsprogramm wie T4MVC oder meine eigenen Hilfsmethoden zu übersetzen und zu vermeiden, das ../../ Verzeichnis-Crawling herauszufinden.

    
Jonathan Bates 17.08.2010, 17:42
quelle
7

Verwenden Sie fiddler , um genau zu sehen, was mit dieser Ressource passiert? Kann Licht auf das Geheimnis werfen. Es sollte 403 sein, wenn es nicht autorisiert ist. Kann 404 sein? Wenn es nicht in einem virtuellen Verzeichnis ist, könnten Sie einfach schreiben:

%Vor%

(Verzeichnisdurchquerung ist schwach)

Update - jetzt mehr Infos

Nice fiddler use;) Wie auch immer, da 302s (temporär umleiten) Ihre CSS-Dateien zu Validierung benötigen, ist das Problem Ihre Formularauthentifizierung.

Sie stoßen wahrscheinlich auf das Problem runAllManagedModuleForAllRequest="true" >. Lesen Sie diesen Beitrag für Informationen.

Oder legen Sie den gesamten Zugriff auf den Inhaltsordner fest, um den Zugriff zuzulassen. Du bist fast da, aber es müsste sein:

%Vor%     
BritishDeveloper 17.08.2010 15:59
quelle
5

Ich hatte ein ähnliches Problem. Wenn es hilft, habe ich dem Root-Web-Verzeichnis die Berechtigung (IUSR oder abhängig von Ihrem Betriebssystem) hinzugefügt, es hat funktioniert.

    
deepak 29.09.2010 04:50
quelle
4

Der 302 leitet Sie vom Login-Framework ab, um Sie bei der Anforderung des CSS anzumelden.

Der Trick dabei ist, dass Ihre MVC-App nicht die Sicherheit über web.config konfigurieren sollte, sondern Sie sollten die [Authorize] -Attribute auf Ihren Controllern verwenden, die Ihr CSS nicht stören.

    
Wyatt Barnett 17.08.2010 21:35
quelle
2

Vermeiden Sie als Erstes hardcodierte Pfade zu Ressourcen wie JS- oder CSS-Dateien in Ihren ASP.NET MVC-Ansichten. Die Verwendung von /Content/Site.css ist nicht besser als ../../..

Benutze Url.Content Helfer:

%Vor%     
mare 18.08.2010 01:27
quelle
0

Sie können der App einfach erlauben, auf Ihre CSS-Datei zuzugreifen:

%Vor%     
Adam Bielecki 18.02.2013 17:09
quelle