Question

Je suis sûr que cela a quelque chose à voir avec IIS, mais je ne peux pas comprendre.

J'ai un site Web en utilisant l'authentification des formulaires. Lorsque mon site web tente d'accéder à toutes les ressources de fichiers (fichiers javascript, css, etc.), je suis redirigé vers la page de connexion des formulaires ensemble dans mon web.config. Je redirigés aussi si je viens de taper l'adresse dans la barre d'adresse.

L'entrée web.config des formes auth est assez basique:

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

Il y a aussi deux nœuds de localisation pour refuser aux utilisateurs d'autres parties du site:

<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>

J'utilise l'installation standard IIS7 sur Windows Server 2008 R2.

Modifier Donc, si j'ajouter un cookie auth aléatoire (FormsAuthentication.SetAuthCookie()), les ressources deviennent disponibles, je sais que ce doit être mon modèle d'authentification qui est foiré en quelque sorte. Il fonctionne sur un autre serveur (je viens recopié plus). Toute idée comment je peux suivre le problème vers le bas?

Était-ce utile?

La solution

J'ai eu la même erreur, dans mon cas l'affaire mettait l'authentification anonyme à utiliser l'identité Piscine App au lieu de IUSR dans IIS

  1. Ouvrez IIS
  2. Développez Sites
  3. Sélectionnez [yourwebsite]
  4. Double-cliquez sur l'authentification (sera sous IIS « Zone » ou la sécurité « Catégorie »)
  5. Sélectionnez l'authentification anonyme
  6. Cliquez sur Modifier dans le volet Actions
  7. Cliquez sur le bouton radio 'identité du pool d'applications'

Autres conseils

J'utilise allow * pour mon dossier Content. Cela permettra d'éviter toute autorisation de se produire pour le contenu statique.

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

Rick

Dans IIS, mon authentification anonyme était correctement et l'utilisateur a été mis à IUSR. Par conséquent, je devais aller dans l'Explorateur Windows, accédez à mon répertoire d'applications Web, un clic droit pour Propriétés, onglet Sécurité, bouton Modifier et donner IUSR Read, Liste et lecture et d'exécution (le jeu par défaut). Vérifiez que les modifications seront héritées par tous les enfants, appliquer, peut-être attendre, et vous êtes bon pour aller.

Il a été le long du temps depuis que je l'ai fait toute forme de travail asp.net, mais les premières questions serait - êtes-vous que votre utilisateur est membre du rôle « rédacteurs ». Vous pouvez utiliser l'outil d'administration du site Web pour configurer cela je pense? http://msdn.microsoft.com/en-us/library/ssa0wsyf.aspx

C'est parce que vous avez défini nier à tout le monde. Dans IIS 7, en raison du pipeline intégré vous serez redirigés même lorsque vous essayez de parcourir CSS ou une page statique.

Placez le contenu statique dans un dossier si vous aimez et permettre l'accès.

Ne pas utiliser des balises <location> dans web.config à une autorisation de poignée dans une application ASP.NET MVC en tant que lieux n'ont plus de sens. Tout ce que vous avez besoin web.config est la balise authentication. Dans l'autorisation MVC pourrait être atteint en décorant les contrôleurs appropriés et / ou des actions avec le [Authorize] attribut.

J'ai eu exactement la même chose et trouvé qu'il était parce que j'avais oublié d'autoriser l'accès anonyme au site de l'intérieur IIS! Cela signifie que le FormsAuthentication a toujours des coups de pied, même pour les ressources statiques qui ne sont pas protégées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top