Comment supprimez-vous la chaîne de requête? ReturnToUrl lors de la déconnexion?
-
06-07-2019 - |
Question
J'ai ceci dans mon code LoginControl.ascx derrière:
protected void Logout_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
Session.Abandon();
FormsAuthentication.RedirectToLoginPage();
Response.End;
//Response.Redirect("default.aspx");
}
Je pensais que lors de la déconnexion, l'utilisateur serait redirigé vers la page de connexion (default.aspx dans ce cas) et qu'une chaîne de requête NO serait attachée. Au lieu de cela, ce que je vois sur l'URL est:
http://kab.domain.com/default.aspx?ReturnUrl=%2fAdministration%2fCharacter%2fView.aspx
Alors maintenant, après la déconnexion, je veux me connecter en tant que personne (avec des privilèges moindres) et si la connexion est réussie, il me redirige vers une page pour laquelle cette nouvelle connexion n'a pas la permission de voir! < grrr / >
Je me rends compte que le " normal " L'utilisateur ne rencontrera jamais ce problème, mais les utilisateurs du test le feront et il s'agira d'un bogue en ce qui les concerne.
Même avec Response.Redirect, j'obtiens toujours la chaîne de requête. Comment puis-je me débarrasser de la chaîne de requête à la déconnexion ???
La solution
Essayez ceci:
Response.Redirect(FormsAuthentication.LoginUrl);
Autres conseils
public partial class MasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void signout_Click(object sender, EventArgs e)
{
Response.Write("<script language=javascript>var wnd=window.open('','newWin','height=1,width=1,left=900,top=700,status=no,toolbar=no,menubar=no,scrollbars=no,maximize=false,resizable=1');</script>");
Response.Write("<script language=javascript>wnd.close();</script>");
Response.Write("<script language=javascript>window.open('login.aspx','_parent',replace=true);</script>");
Session["name"] = null;
}
}
J'ajoute également sur toutes les pages ce code.
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetAllowResponseInBrowserHistory(false);
}
}