2010-08-03 6 views
1

J'ai un site Web qui utilise l'authentification par formulaire. Pour l'essentiel, mon site Web nécessite une authentification pour faire quoi que ce soit. Ma page de déclaration de confidentialité est une exception et doit être accessible aux utilisateurs anonymes. La page est dans un dossier, et je l'ai mis les informations de chemin d'accès dans le web.config comme suit:L'accès anonyme à la page ASPX échoue

<location path="about"> 
    <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
    </system.web> 
</location> 
<location allowOverride="true"> 
    <system.web> 
     <authentication mode="Forms"> 
      <forms name="FDAuth" 
        cookieless="UseCookies" 
        protection="All" 
        loginUrl="login.aspx" 
        requireSSL="false" 
        slidingExpiration="false"></forms> 
     </authentication> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 
    </system.web> 
</location> 

Cette configuration permet un accès anonyme à d'autres types de fichiers, mais demande toujours un pour ouvrir une session pages aspx.

En d'autres termes, l'accès anonyme est autorisé à cette page

www.mywebsite.com/about/privacy.asp

, mais je vais à la page login.aspx si je tente d'accéder à accéder à ce Page

www.mywebsite.com/about/privacy.aspx

Que dois-je faire pour autoriser l'accès anonyme www.mywebsite.com/about/privacy.aspx?

Répondre

0

Juste une chose: Ajoutez la ligne <allow users="?"/>

* utilisateurs correspond à aucun des noms d'utilisateurs authentifiés, alors que tous les matchs ? non authentifiés.

Donc, vous auriez ceci:

<location path="about"> 
    <system.web> 
     <authorization> 
      <allow users="*"/> 
      <allow users="?"/> 
     </authorization> 
    </system.web> 
</location> 
+0

Merci pour votre réponse, mais cette modification n'a pas résolu le problème. – jeffc

1

Il suffit de retirer l'élément <location allowOverride="true"> et configurer <authorization/> au sein <system.web/>

<location> balises sont utilisées pour définir des exceptions à la politique globale, qui est généralement défini dans la <authorization/> au sein de <system.web/>.

+0

Voilà comment je l'ai eu au départ, mais l'a changé en fonction de cette réponse à une question similaire http://stackoverflow.com/questions/1354185/how-do-i-grant-anonymous-access-to-a-url- using-formsauthentication Aucun moyen autorisé l'accès anonyme à la /about/privacy.aspx page – jeffc

0

Vous devriez essayer:

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

Comme par this MSDN example. Notez le ? au lieu du * utilisé pour l'accès anonyme.

Cela devrait résoudre votre problème, mais sinon vous pouvez spécifier une des ressources spécifiques:

<location path="about\privacy.aspx"> 
+0

Merci pour votre réponse, mais en changeant le * à un? n'a pas résolu le problème. – jeffc

+0

@jeffc avez-vous essayé de spécifier le fichier exact comme je l'ai mentionné? Assurez-vous également que vous n'avez aucun site Web pour enfants.fichiers de configuration qui pourraient vous remplacer vos paramètres actuels. – Kelsey

0

Got it. Le problème était que la page utilise une page maître. Le déplacement de la page maître dans le dossier about a résolu le problème.

Grâce aux réponses rapides!

+0

Était-ce la réponse finale? – bgmCoder

Questions connexes