2010-08-30 4 views
1

Environnement: ASP.NET 3.5, C#, l'authentification par formulaire, IIS 6Web.config élément Lieu fonctionne correctement

Problème Détails: J'ai un fichier web.config mis en place avec l'authentification des formulaires et les suivants sont l'élément location, tel qu'il apparaît:

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

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

Home/dossier Common contient mon ForgotPassword.aspx.

La page Login.aspx est définie comme LoginUrl

Lorsque la page de connexion est visité la première fois (sans les cookies avant etc.), les fonctions de liaison ForgotPassword bien. Il redirige vers la page comme souhaité. Cependant, une fois qu'un utilisateur s'est connecté, lors de la déconnexion, le lien ForgotPassword n'est pas redirigé. Au contraire, l'authentification par formulaire précède et redirige vers l'URL de connexion avec la chaîne de requête ReturnURL pointant vers la page Mot de passe oublié. La question est simplement: Si avant la signature de l'élément est considéré et à juste titre exclu de l'authentification par formulaires, pourquoi publier Signer et Déconnecter devient l'objet de l'authentification par formulaire. Il est à noter que lors de l'effacement de l'historique du navigateur, la fonctionnalité fonctionne comme prévu.

Toute aide serait appréciée.

Merci.

Répondre

1

Il est plus commun d'utiliser le point d'interrogation (?) Pour autoriser/refuser des utilisateurs non authentifiés. Les utilisateurs non authentifiés sont ceux qui ont vraiment besoin d'utiliser la fonctionnalité de réinitialisation de la page de connexion et du mot de passe, donc permettre à tous les utilisateurs (*) d'y accéder est une configuration incorrecte. Cependant, vous n'avez pas publié votre Web.config entier. Il y aura une configuration racine pour l'autorisation qui traite de «tout le reste».

Comment je configurer probable que ce soit au sein de la racine <system.web>, je dois:

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

Et plus tard dans le web.config, définir des emplacements qui sont fixés:

<location path="Business/Services"> 
    <deny users="?" /> 
</location> 

Qui refuse tous les utilisateurs non authentifiés aux pages de ce dossier. Vos pages de connexion et mot de passe oublié seraient dans le dossier racine. Peu importe, il me manque quelque chose ou vous n'avez pas l'authentification de la racine configurée qui peut être source d'confusion pour l'authentification ASP.NET.

Questions connexes