Pan*_*cus 12
这实际上取决于您正在寻找的所需功能.我假设您正在使用FormsAuthentication.
您需要关注两个独立的事项:Session和FormsAuthentication cookie.除非我弄错了,否则这两个都有不同的超时.
如果您遇到的问题是会话超时但用户仍然经过身份验证,您可以尝试以下组合:
1:确保身份验证cookie具有与会话相同的超时值:
<authentication mode="Forms"><forms ... timeout="20" ... ><authentication>
<sessionState ... timeout="20" ... />
Run Code Online (Sandbox Code Playgroud)
2:在Page_Load事件中,检查会话是否超时:
if (context.Session != null && Context.Session.IsNewSession == true &&
Page.Request.Headers["Cookie"] != null &&
Page.Request.Headers["Cookie"].IndexOf("ASP.NET_SessionId") >= 0)
{
// session has timed out, log out the user
if (Page.Request.IsAuthenticated)
{
FormsAuthentication.SignOut();
}
// redirect to timeout page
Page.Response.Redirect("/Timeout.aspx");
}
Run Code Online (Sandbox Code Playgroud)
(有关检测会话超时的信息,请参阅http://www.eggheadcafe.com/articles/20051228.asp)
如果您想要更愉快的用户体验,可以在X分钟后使用javascript启动某种模式UI弹出窗口.此弹出窗口将允许用户启动按钮单击,这将触发服务器上的AJAX回发,从而扩展其身份验证和会话cookie,而无需重新加载页面.我以前从未实现过这个,但看起来,这个人做了一个ASP.NET AJAX控件!
| 归档时间: |
|
| 查看次数: |
15733 次 |
| 最近记录: |