【发布时间】:2010-10-11 22:38:40
【问题描述】:
我希望我的应用程序在会话超时后立即注销已登录的用户并将他们带到 Loing.aspx 页面。用户应该在不触发任何事件的情况下注销。我尝试过更改身份验证模式,但都徒劳无功...
【问题讨论】:
-
你的代码和配置现在是什么样子的?它是如何失败的?没有更多信息很难提供帮助。
标签: c# asp.net web-config session-timeout
我希望我的应用程序在会话超时后立即注销已登录的用户并将他们带到 Loing.aspx 页面。用户应该在不触发任何事件的情况下注销。我尝试过更改身份验证模式,但都徒劳无功...
【问题讨论】:
标签: c# asp.net web-config session-timeout
Web 窗体与 Windows 窗体不同,但您可以尝试一下。
您无法捕获 Session.End 事件并将用户重定向到其他地方,但您可以使用 cookie。会话过期,cookie 的过期由您的代码控制。
我首先想到的是登录后设置一个cookie,然后在每个页面加载检查
if (cookie is present && Session["LoggedIn"]==null)
Response.Redirect("Login.aspx");
这是一个粗暴的手写伪代码,可能会帮助您产生想法。
但另一个问题出现了:如果您在受保护的区域并且会话到期,那么 ASP.NET,一旦您配置好身份验证,应该会自动将您带到登录页面。
“良好配置”是指遵循所有标准程序在您的 Web 应用程序中创建保护区并使用表单身份验证:RTFM for that http://www.asp.net/security/tutorials/an-overview-of-forms-authentication-vb
【讨论】:
如果您的表单身份验证设置正确 (Like mentioned here),并且您无论如何都不想在会话超时时捕获任何事件,那么理想情况下,如果用户处于非活动状态 20 分钟(这是默认会话超时时间)除非您更改它),应用程序会自动将任何下一个请求重定向到 Login.aspx。但请确保您遵循上述链接中给出的所有步骤(基本上正确的身份验证和授权标签等)。
【讨论】:
尝试在 web.config 中的<system.web> 下添加以下标签
<sessionState mode="InProc" timeout="200"></sessionState>
【讨论】: