Come si elimina la stringa di query? ReturnToUrl all'uscita?
-
06-07-2019 - |
Domanda
Ho questo nel mio codice LoginControl.ascx dietro:
protected void Logout_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
Session.Abandon();
FormsAuthentication.RedirectToLoginPage();
Response.End;
//Response.Redirect("default.aspx");
}
Mi aspettavo che al logout l'utente sarebbe stato reindirizzato alla pagina di accesso (default.aspx in questo caso) e ci sarebbe stata NO stringa di query allegata. Invece, quello che vedo nell'URL è:
http://kab.domain.com/default.aspx?ReturnUrl=%2fAdministration%2fCharacter%2fView.aspx
Quindi ora, dopo essermi disconnesso, voglio accedere come un'altra persona (con privilegi minori) e su un login riuscito mi reindirizza a una pagina che questo nuovo login non ha i permessi per vedere! < grrr / >
Mi rendo conto che il " normale " l'utente non incontrerà mai questo problema, ma gli utenti del test lo fanno ed è un bug per quanto li riguarda.
Anche con Response.Redirect ottengo ancora la stringa di query. Come posso eliminare la stringa di query al logout ???
Soluzione
Prova questo:
Response.Redirect(FormsAuthentication.LoginUrl);
Altri suggerimenti
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;
}
}
Sto anche aggiungendo su tutta la pagina questo codice.
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetAllowResponseInBrowserHistory(false);
}
}