2009-08-11 2 views
0

Ich verwende formAuthentication mit der folgenden Web.Config-Datei.Nach dem Ausführen von FormsAuthentication.SignOut() kann sich der Benutzer nicht erneut anmelden.

<authentication mode="Forms"> 
    <forms name="SnowBall" timeout="30" slidingExpiration="true" loginUrl="Login.aspx"  cookieless="AutoDetect"> 
    </forms> 
</authentication> 
<authorization> 
    <deny users="?"/> 
</authorization> 

Ich habe ein Benutzersteuerelement, das eine LogOut-Schaltfläche hat. Der Code der Abmelde-Taste lautet:

Nachdem ich diesen Code ausgeführt habe, kann ich den Benutzer nicht mehr authentifizieren. Wenn ich auf "Anmelden" klicke, wird die Seite aktualisiert und Event-Handler werden nicht ausgeführt.

Wenn ich das Browserfenster schließe und die Seite neu starte, funktioniert alles einwandfrei. Bitte hilf mir.

+0

dummen Fragen sein: - Do Client-Uhr richtig? - Haben Sie eine Cache-Einstellung für die Seite, auf die der Benutzer nach der Anmeldung weitergeleitet wurde? – Dewfy

+0

Nopes, keine Cache-Einstellungen. – Rohit

+0

Mit Fiddler überprüfen Sie nach dem zweiten Login auth Cookies, wenn es vorhanden ist, dann alles in Ordnung. Ansonsten haben Sie einige Probleme mit dem Servercode. – Dewfy

Antwort

0

Ich habe den solution.Hope findet es jemand da mit dieser Linie

Problem liegt heraus hilft

Response.Redirect("Login.aspx"); 

Was sie tut, ist umleitet Benutzer mit ReturnUrl als querystring.For Eg Login.aspx.

Login.aspx? ReturnUrl = "Name der Seite, von der sich die Abmeldung ereignet hat";

Nun, was passiert ist, dass FormsAuthentication.GetRedirectUrl() diesen Querystring-Pfad beibehalten und nach der Authentifizierung auf diesen Pfad umgeleitet wurde. Die Benutzeranmeldeinformationen, die ich eintrug, waren nicht berechtigt, diese Seite anzuzeigen. So war ich immer auf dem Anmeldebildschirm .

Um dieses Problem zu beheben

ersetzen
Response.Redirect("Login.aspx"); 

Mit

Response.Redirect(FormsAuthentication.LoginUrl); 
+0

FormsAuthentication.RedirectToLoginPage() ist sauberer. Sie sollten ein defaultUrl Attribut in Web.config gesetzt haben, das heißt RichardOD

+0

No i defaultUrl dort gesetzt donot haben.Ich hatte dasselbe Problem mit FormsAuthentication.RedirectToLoginPage(). – Rohit

0

Zuerst müssen Sie deaktivieren, dass es zwei separate IDs gibt, die Sitzungs-ID ist, die für die Browsersitzung zugeteilt wird, und ein anderes ist Formularauthentifizierungs-Cookie, das eine verschlüsselte alphanumerische ID ist.

Immer wenn Sie formauthentication.signout verwenden, werden Ihre formauthentifizierungs-Cookies gemäß Ihrer Implementierung entfernt. Ihre Sitzungs-ID bleibt jedoch erhalten.

Sie können es überprüfen, indem Sie fiddler/firefox Browser verwenden.