Asp.net 如何让用户停留在网站的特定页面上?

Asp.net 如何让用户停留在网站的特定页面上?,asp.net,Asp.net,这就是我想要实现的目标 当用户登录并且其密码已过期时,我会将其重定向到“更改密码”屏幕。 我希望用户在进入菜单中的其他链接之前更改其密码 我想在他试图离开时重定向回这个changepassword.aspx,除非他更改了密码 那我该怎么做呢?更重要的是在哪里 谢谢你的帮助 编辑:我知道我们可以使用response.redirect,但它不能用于卸载操作 编辑:好的,我不是在问这个问题,我需要帮助让用户保持在页面上-我如何做,以及页面的哪个部分[加载、卸载等]在用户会话中设置一个标志,指示他们需要

这就是我想要实现的目标

当用户登录并且其密码已过期时,我会将其重定向到“更改密码”屏幕。 我希望用户在进入菜单中的其他链接之前更改其密码

我想在他试图离开时重定向回这个changepassword.aspx,除非他更改了密码

那我该怎么做呢?更重要的是在哪里

谢谢你的帮助

编辑:我知道我们可以使用response.redirect,但它不能用于卸载操作


编辑:好的,我不是在问这个问题,我需要帮助让用户保持在页面上-我如何做,以及页面的哪个部分[加载、卸载等]

在用户会话中设置一个标志,指示他们需要更改密码,然后从所有其他页面检查该标志,并在必要时将其重定向到“更改密码”页面。

请不要这样做。这种PITA UI非常令人恼火。只是让他们的密码过期,然后如果他们不更改密码,访问就会失败

不要像对待孩子一样对待你的用户(除非他们真的是孩子,甚至可能不是孩子)

编辑:这是一个社区答案,因为我只是在说教而不是回答;-)

  • 如果需要更改密码,请设置会话变量
  • 在每个页面上检查该会话的加载情况,如果该会话存在(并且不在密码更改屏幕上),则重定向

  • 我在他的会话中设置了一个变量,然后在您的Global.asax应用程序中\u开始请求事件检查会话变量,并根据需要重定向。

    “此模块解释了ASP.NET 2.0版中窗体身份验证的工作原理。它解释了IIS和ASP.NET身份验证如何协同工作,并解释了FormsAuthenticationModule类的角色和操作。”

    在web.config中,我的授权部分说

    <authorization>
      <deny users="?"/>
      <allow users="*"/>
    </authorization>
    
    
    <location path="ChangePassword.aspx">
      <system.web>
        <authorization>
          <allow users="*"/>
        </authorization>
      </system.web>
    </location>
    

    我们曾经在我们的网站上使用母版页,在页面加载事件中,我们将用户重定向到我们的changepassword.aspx页面

    我们还使用(或滥用,取决于您的观点)asp.net成员资格的Profile元素,并在其中简单地将MustChangePassword条目设置为true。这意味着当他们登录时,您可以查看他们的配置文件中是否设置了MustChangePassword条目,并重定向到ChangePassword页面。这当然会让他们保持关注


    人们正确地认为,在每次页面加载时都使用密码是愚蠢的,但检查用户配置文件中的一个元素所需的开销很小,您至少可以强制当前登录的用户更改密码。

    不幸的是,客户端希望这样做,因此,如果用户的密码已过期,那么他希望他们先更改密码。您的客户需要解释的是,用户有权做其他事情-如果他们只是放弃并关闭机器,您对此无能为力。只要满足于如果他们的密码过期了,他们就不能访问你网站上的其他任何东西——在过去糟糕的网络时代,当用户关闭一个窗口时,你可以不断生成新的窗口,但谢天谢地,那些日子已经过去了。很抱歉正如您所发现的,用户正在进行的唯一“可靠”指示是卸载事件,到那时已经太迟了,除非启用了弹出窗口……此外,您还需要一些方法来确定卸载事件是否是因为用户关闭了浏览器,还是因为他们成功更改了密码而触发的,并且正在转到下一页-否则,当他们试图继续时,您将生成更多的页面。这是最简单的解决方案。不,不,不,在Global.asax中执行。把它放在每一个页面加载事件中都是红色的。我真的不是指字面上的页面加载事件。输入错误。@boo您可以将其放在模块或基本页面类的每个页面加载事件上。这个答案显然为智能实现留下了空间。没有理由否决投票。