在用户会话到期时重定向到页面的最佳实践
本文关键字:最佳 重定向 用户 会话 | 更新日期: 2023-09-27 17:49:39
我已经从这个问题尝试过了。但这对我没有帮助。所有的答案似乎都不起作用。我不想检查会话是否为空,并在每个方法中重定向到其他页面。我试图在Session_end事件中重定向,但它不工作,因为它没有与之关联的HTTP上下文。
那么,什么是最佳实践?
谢谢。
在这种情况下最好不要重定向。
假设你是一个网站的用户,你想访问http://example.net/theInterestingBit
。
现在让我们假设您的会话已经过期。
是你想要的,你会去/theInterestingBit
,如果你的会话是活的,但否则你会去/someLoginPage
"成功"?可能不会。
你想要的是去/theInterestingBit
,而不是关心"会话",因为这是程序员担心的事情,而不是你。
所以不要重定向,而是使用HttpServerUtility.Transfer
或HttpContext.RewritePath
,这样用户仍然会转到/theInterestingBit
,但这变成了一个登录页面或其他适当的方式来开始一个新的会话。请确保响应使用状态码403,以便将其适当地标记为错误页面,而不是"成功"响应。
在任意全局中执行此操作。或在IHttpModule
的实现中,响应PostAcquireRequestState
事件(因为这是在设置了适当的会话(或缺少会话)之后触发的事件)。如果您已经在那里做了一些事情,您也可以在BeginRequest
的处理程序中完成它。全球。Asax更容易快速添加,但模块更容易重用或设置为应用程序的某些部分工作,而不是其他部分。