2011-11-17 83 views
1

我已经在谷歌搜索很多这个。我得到了所有的代码,但代码不起作用。我创建了一个注销按钮,并在按钮的单击重定向用户注销页面...但进一步的事情并不顺利。返回按钮问题...和注销按钮

这里是注销页面

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session.Abandon(); 
    Session.Clear(); 
    Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)); 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    Response.Cache.SetNoStore(); 

} 
protected void Timer1_Tick(object sender, EventArgs e) 
{ 
    string redirectUrl = FormsAuthentication.LoginUrl + "?ReturnUrl=loginAcc.aspx"; 
    FormsAuthentication.SignOut(); 
    Response.Redirect(redirectUrl); 

} 

编辑代码:出现以下异常:资源无法找到。

说明:HTTP 404.您正在查找的资源(或其某个依赖项)可能已被删除,名称已更改或暂时不可用。请检查以下网址并确保它拼写正确。请求的网址:/MailFormat/login.aspx

+0

你能否详细说明**更多的事情**? – V4Vendetta

+0

*“更进一步的事情不好”*?具体问题是什么? – Polynomial

+1

“更进一步的事情不好”是什么意思? –

回答

0

我没有看到任何计时器控制。你的页面上是否有计时器控件,并且已启用,这样Timer1_Tick会被解雇?

+0

yuppp..Its .. – mona

0

请尝试使用以下代码。

Response.Redirect(FormsAuthentication.LoginUrl); 

FormsAuthentication.RedirectToLoginPage()更整齐。您应该在Web.config中设置defaultUrl属性,即<forms loginUrl="login.aspx" defaultUrl="index.aspx" />

+0

我在哪里可以在网络设置这个标签config..Plz让我知道 – mona

+0

<配置> <认证模式= “表格”> <形式loginUrl = “login.aspx的” defaultUrl = “的Index.aspx”>

+0

thanxxx所以muchh FR帮助 – mona

0

会话和身份验证是两件不同的事情,您需要在注销时同步。我认为注销Page_Load你应该做 FormsAuthentication.SignOut();然后清除会话。

0

我找到解决这个查询===我添加了一个javascript函数

<script type="text/javascript" language="javascript"> 
function disableBackButton() 
{ 
window.history.forward(); 
} 
setTimeout("disableBackButton()", 0); 
window.onload=disableBackButton(); 
window.onpageshow=function(evt) { if(evt.persisted) disableBackButton() } 
window.onunload=function() { void(0) } 
</script> 

<script runat="server"> 

然后身体上调用此函数

<body onload="disableBackButton()"> 

清除所有seeeions上登出点击 然后 页负载管理员检查 会话值 如果为空则返回哟登录页面。以下是代码

protected void ImageButton2_Click(object sender, ImageClickEventArgs e) 
    { 
     try 
     { 
      Session.Abandon(); 
      Session.RemoveAll(); 
      Session.Clear(); 

      if (Session["hr"] == null && Session["EMPLOYEEID"]==null) 
      { 
       Response.Redirect("~/loginAcc.aspx"); 
      } 
     } 
     catch (Exception ex) 
     { 
      Response.Write(ex.Message); 
     } 

    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Session["hr"] == null && Session["EMPLOYEEID"] == null) 
     { 
      Response.Redirect("~/loginAcc.aspx"); 
     } 
    } 
+0

如果你想要做的是只需登录用户出去并清理会话,然后你就在房子周围做这件事。如果您的解决方案回复了JS的登录安全性,那么它非常不安全,您应该重新考虑您的方法,或者使用类似于Membership Provider的东西。这甚至没有提到你真的不应该禁用浏览器中的后退按钮。 –

+0

清除会话是不够的.bcj人们可以访问任何页面,如果他知道poage的URL ...这就是为此添加了javascript ... – mona

+0

但我的观点是,如果有人关闭JavaScript,那么您的后退按钮代码会没有什么,你的解决方案是无效的。另外单独禁用后退按钮并不能保证页面的安全,任何人都可以直接访问它们。 –