2009-12-18 4 views
0

Mon système d'authentification de formulaires fonctionne.Asp.Net Forms Authentification passant à nouveau à la page de connexion après une connexion réussie

J'ai trouvé un comportement étrange tel qu'après une connexion réussie; On m'a demandé de me reconnecter, si je navigue vers la page de connexion à partir de la page par défaut. Je supposais qu'il devrait me rediriger vers la page par défaut puisque je suis déjà authentifié.

Voilà l'élément Web.config je:

<authentication mode="Forms"> 
<forms loginUrl="login.aspx" defaultUrl="default.aspx" />    
</authentication> 
<authorization> 
<deny users="?"/> 
</authorization> 
+0

TigerAmit

Répondre

3

Ce comportement est normal. La page de connexion est un formulaire Web ASP.NET standard. Il affichera tout ce qu'il contient.

Vous pouvez ajouter du code à l'événement de la page de connexion pour vérifier si l'utilisateur est déjà authentifié. Ensuite, vous pouvez les rediriger vers la valeur par défaut en appelant la méthode FormsAuthentication.RedirectFromLoginPage si c'est ce que vous recherchez.

+0

Supposons que j'ai une page photo.aspx. Une fois connecté, je vais sur la page photo.aspx, System ne chargera la page photo que lorsque je serai authentifié. (Je n'écris pas de code supplémentaire pour que cela se produise) Pourquoi je ne devrais pas attendre le même comportement sur la page de connexion. Par exemple, chargez la page si je suis authentifié (redirection vers la valeur par défaut) sinon affichez le formulaire de connexion. – TigerAmit

+0

@TigerAmit, ok, laissez-moi tenter ... La page de connexion vous redirige vers la page à laquelle vous avez essayé d'accéder lorsque vous y avez été redirigé (la page de connexion). Si vous n'étiez pas redirigé là-bas, je n'ai aucune idée de l'endroit où vous envoyer, donc il se contente de poster sur lui-même. Avoir du sens? En d'autres termes, si vous naviguez vers la connexion et la connexion, alors vous pensez que vous voulez accéder à la connexion, et par coïncidence, vous êtes déjà connecté, donc la connexion n'a rien à faire sauf vous connecter. ;-) –

0

Lorsqu'un utilisateur s'authentifie auprès d'un site Web à l'aide de l'authentification par formulaires, le serveur crée un cookie. La valeur du cookie est un ticket d'authentification de formulaires chiffrés. Le cookie est transmis au serveur à chaque requête de l'application et la classe FormsAuthenticationModule déchiffre la valeur de cookie et détermine si l'utilisateur est valide ou non. Je pense que vous avez une étiquette de soufflage dans votre projet web.config. Retirer le

... 
<modules> 
    <remove name="FormsAuthentication" /> 
</modules> 
.... 

sinon, vérifiez le machine.config, il doit avoir l'étiquette ci-dessous:

<httpModule> 
    …other modules… 
    <add name="FormsAuthentication" 
     type="System.Web.Security.FormsAuthenticationModule" /> 
    …other modules… 
</httpModule> 
+0

https: // support. microsoft.com/en-us/kb/910439 – user3084147

Questions connexes