Frage

Ich bin sicher, das hat etwas mit IIS zu tun, aber ich kann es nicht herausgefunden.

habe ich eine Website Formularauthentifizierung verwenden. Wenn meine Website versucht alle Dateiressourcen (Javascript-Dateien, CSS, etc.) zugreifen zu können, ich bin umgeleitet auf die Formen Login-Seite Satz in meinem web.config. Ich werde auch umgeleitet, wenn ich geben Sie einfach die Adresse in die Adressleiste ein.

Der web.config Eintrag für Formulare Auth ist ziemlich einfach:

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

Es gibt auch zwei Standort Knoten Benutzer aus anderen Teilen der Website zu verweigern:

<location path="n2">
  <system.web>
    <authorization>
      <allow roles="Editors" />
    </authorization>
  </system.web>
</location>
<location path="web.config">
  <system.web>
    <authorization>
      <deny users="*" />
    </authorization>
  </system.web>
</location>

Ich bin mit dem Standard IIS7 auf Windows Server 2008 R2 installieren.

Bearbeiten Also, wenn ich ein zufälliges Auth Cookie (FormsAuthentication.SetAuthCookie()) hinzufügen, werden die Ressourcen zur Verfügung, ich weiß, es hat mein Authentifizierungsmodell sein, die irgendwie vermasselt wird. Es funktioniert auf einem anderen Server (I kopiert es etwas mehr als). Alle Ideen, wie kann ich das Problem nach unten verfolgen?

War es hilfreich?

Lösung

Ich hatte den gleichen Fehler, in meinem Fall der Trick einstellt Anonyme Authentifizierung die App Pool Identität statt IUSR- in IIS verwenden

  1. Öffnen IIS
  2. erweitern Seiten
  3. Wählen Sie [yourwebsite]
  4. Klicken Sie doppelt auf Authentifizierung (wird unter dem IIS „Bereich“ oder die Sicherheit „Kategorie“)
  5. Wählen Sie Anonyme Authentifizierung
  6. Klicken Sie auf Bearbeiten im Aktionsbereich
  7. Klicken Sie auf die ‚Anwendungspoolidentität‘ Optionsfeld

Andere Tipps

Ich benutze allow * für meine Content Ordner. Das wird die Genehmigung geschieht für statische Inhalte verhindern.

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

Rick

In IIS, meine anonyme Authentifizierung war korrekt auf und der Benutzer IUSR gesetzt wurde. Deshalb musste ich in Windows Explorer auf meiner Web-App-Verzeichnis der rechten Maustaste für Eigenschaften, Registerkarte Sicherheit Schaltfläche Bearbeiten gehen, und geben IUSR- lesen, Liste und Read & Berechtigungen Ausführen (den Standardsatz). Achten Sie darauf, die Änderungen werden von allen Kindern vererbt werden, gelten, möglicherweise warten, und du bist gut zu gehen.

Es ist entlang Zeit her, dass ich jede asp.net Formen der Arbeit tat, aber die ersten Fragen wären - sind Sie sicher, dass Ihre Benutzer ein Mitglied der „Editors“ Rolle. Sie können das Web Site Administration Tool verwenden, um dieses bis zu setzen ich denke? http://msdn.microsoft.com/en-us/library/ssa0wsyf.aspx

Das ist, weil Sie eingestellt haben, dass jeder verweigern. In IIS 7, weil die integrierten Pipeline werden Sie sogar umgeleitet werden, wenn Sie versuchen, zu durchsuchen CSS oder eine statische Seite.

Setzen Sie den statischen Inhalt in einem Ordner, wenn Sie mögen und erlauben den Zugriff auf sie.

Verwenden Sie <location> Tags in web.config Griff Autorisierung in einer ASP.NET MVC-Anwendung nicht als Standorte haben keinen Sinn mehr. Alles, was Sie in web.config brauchen, ist der authentication-Tag. In MVC Genehmigung durch die Dekoration richtige Controller und / oder Aktionen mit dem [Authorize] Attribut.

Ich hatte genau das gleiche und fand es war, weil ich vergessen hatte, von innen IIS anonymen Zugriff auf die Website zu ermöglichen! Dies bedeutet, dass die FormsAuthentication immer in kickt, auch für die statischen Ressourcen, die nicht geschützt war.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top