【问题标题】:back Button issue...and logout button返回按钮问题...和注销按钮
【发布时间】:2011-11-17 10:18:08
【问题描述】:

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

这是登出页面的代码

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。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。请求网址:/MailFormat/login.aspx

【问题讨论】:

  • 您能否详细说明进一步的事情?
  • “其他事情进展不顺利”?具体是什么问题?
  • “进一步的事情不顺利”具体是什么意思?
  • 发生以下异常 ===== 找不到资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。请求的 URL:/MailFormat/login.aspx

标签: c# asp.net


【解决方案1】:

我没有看到任何计时器控件。您的页面上是否有计时器控件并且是否已启用,以便触发 Timer1_Tick?

【讨论】:

    【解决方案2】:

    试试下面的代码。

    Response.Redirect(FormsAuthentication.LoginUrl);
    

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

    【讨论】:

    • 我在哪里可以在网络配置中设置这个标签..请告诉我
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我找到了这个查询的解决方案===我添加了一个 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 上调用这个函数

      <body onload="disableBackButton()">
      

      清除所有关于注销点击的seeeions 然后 在管理员的页面加载上检查 会话值 如果为null,则返回您的登录页面。以下是代码

       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");
              }
          }
      

      【讨论】:

      • 如果您要做的只是将用户注销并清除会话,那么您就可以绕着房子走。如果您的解决方案依赖 JS 来确保登录的安全性,那么它是非常不安全的,您应该重新考虑您的方法,或者使用类似 Membership Provider 的东西。这甚至都没有提到你真的不应该禁用浏览器中的后退按钮。
      • 清除会话是不够的。bcj 如果他知道 poage 的 url,他可以访问任何页面...那就是我为此添加了 javascript...
      • 但我的意思是,如果有人关闭了 JavaScript,那么您的后退按钮代码将无济于事,您的解决方案也无效。此外,单独禁用后退按钮并不能确保页面安全,任何人仍然可以直接访问它们。
      • 是的。正如@jayesh goyani 建议的那样,使用表单身份验证来限制对安全页面的访问,并使用成员资格提供程序来处理帐户以及登录和注销。除非迫不得已,否则不要重新发明轮子。
      猜你喜欢
      • 2014-10-22
      • 2020-11-21
      • 1970-01-01
      • 2012-05-17
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      相关资源
      最近更新 更多