gpt4 book ai didi

asp.net - 如何在 asp.net 中单击浏览器后退按钮使 session 过期

转载 作者:行者123 更新时间:2023-12-01 01:02:58 26 4
gpt4 key购买 nike

这是我的场景:

我有以下页面:

  • 1 登录页面
  • 1 个母版页为“ABC.Master”
  • 3 个子页面为“第 1 页”、“第 2 页”、“第 3 页”。

  • 第 1 页、第 2 页和第 3 页是母版页“ABC.Master”的子页。

    页面流程:
  • 输入用户名和密码后,如果我点击登录,它会移动到页面
    1
  • 从第 1 页,如果我单击某些链接,它会移动到第 2 页
  • 从第 2 页开始,如果我单击浏览器后退按钮, session 应该会过期

  • 备注 : 应该纯粹像银行网站。即)单击浏览器返回
    session 必须过期的按钮。

    最佳答案

    这个问题已经有一段时间了。大多数人都用它来解决它:

    protected void Page_Load(object sender, EventArgs e)
    {
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Cache.SetExpires(Now.AddSeconds(-1));
    Response.Cache.SetNoStore();
    }

    此代码片段基本上指示相关页面在发布后立即过期,并将页面设置为不缓存其任何内容。

    但是,某些浏览器可能会忽略页面缓存设置,并且某些用户可能仍会多次提交表单。

    解决方法:
    protected void Page_Load(object sender, EventArgs e)
    {
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Cache.SetExpires(Now.AddSeconds(-1));
    Response.Cache.SetNoStore();

    if (Page.IsPostBack){
    if (isPageExpired()){
    Response.Redirect("expired.htm");
    }
    else {
    Session("TimeStamp") = Now.ToString;
    ViewState("TimeStamp") = Now.ToString;
    }
    }
    }


    private boolean isPageExpired()
    {
    if (Session("TimeStamp") == null || ViewState("TimeStamp") == null)
    return false;
    else if (Session("TimeStamp") == ViewState("TimeStamp"))
    return true;
    else
    return false;
    }

    基本上,无论何时加载页面,它都会通过调用 isPageExpired 函数来检查它是否是重新提交的页面。如果函数返回true,则将页面重定向到页面过期响应;如果没有,它会设置两个时间戳:一个保存在 session 状态,另一个保存在 View 状态。

    isPageExpired 函数比较 session 状态中保存的时间戳和 View 状态中的时间戳。如果它们不同,则用户已从缓存中提交了一个表单;然后,页面将它们定向到页面过期响应。

    关于asp.net - 如何在 asp.net 中单击浏览器后退按钮使 session 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21456577/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com