登出必须在asp.net中点击两次
本文关键字:两次 net asp | 更新日期: 2023-09-27 18:10:08
在我的主页我有签到。当我点击sign out按钮时,执行下面的代码
protected void singout_Click(object sender, EventArgs e)
{
Session.Abandon();
if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
{
HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
FormsAuthentication.SignOut();
Response.Redirect("Home.aspx");
}
}
和在同一个母版页我的加载是
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
LoadData();
}
}
private void LoadData()
{
Menu Items..
}
当我点击签出菜单消失,因为我做它在基于角色的页面加载,所以这意味着角色权限存储在会话中,所以它得到清除,但页面必须重定向到主页。aspx,但它仍然在同一个页面,我不得不再次点击退出的页面重定向到home.aspx。我哪里错了
只需使用FormsAuthentication即可方便注销操作,而无需触及代码中的cookie,也无需使用if
语句。Forms Authentication将自动为您处理cookie状态。
这也将解决双重签出的问题,因为你重定向用户远离受保护的页面第一次签出按钮被点击。
protected void singout_Click(object sender, EventArgs e)
{
Session.Abandon();
//Removes the forms-authentication ticket from the browser:
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
// ...or redirect the user to any place of choice outside the protected files.
}
试试下面提到的代码
protected void singout_Click(object sender, EventArgs e)
{
Session.Abandon();
if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
{
HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
FormsAuthentication.SignOut();
}
Response.Redirect("Home.aspx");
}