【问题标题】:Session time out Logout Url ASP.Net会话超时注销 URL ASP.Net
【发布时间】:2013-11-16 20:59:55
【问题描述】:

我在 4.0 框架中构建的 ASP.Net Web 应用程序存在问题。 我在网络配置中设置了以下内容 -

<authentication mode="Forms">
  <forms loginUrl="~/SignIn.aspx" protection="All" timeout="2880" path="/" />
</authentication>

当用户点击我的网址时,他会看到登录页面。 现在 会话超时 设置为 IIS 的默认会话超时,即 20 分钟。 现在,当 会话到期 我想强制用户重定向到 Logout.aspx

我怎样才能做到这一点?一旦会话超时,我想将用户重定向到 Logout.aspx 页面。

【问题讨论】:

  • 我知道的唯一方法是创建一个 AJAX 方法,该方法调用服务/操作以确定用户是否仍处于登录状态。
  • 为什么他们需要重定向到注销?如果用户的会话已过期,他们将不得不重新登录。你在注销时做些什么吗?
  • 是的,我们在注销时有自定义逻辑。
  • 如果我在 global.asax 的 Session_End 事件中添加 response.redirect("logout.aspx") 会怎么样?

标签: c# asp.net session iis session-timeout


【解决方案1】:

简短的回答是检查每个页面请求上的 HttpContext.Current.Session.IsNewSession 以查看用户的会话是否超时并开始了新会话。如果是新会话,请将用户重定向到您选择的页面。

如果您正在使用 MVC,或者只是想查看有关会话超时的更详尽解释,请查看 http://tyronedavisjr.com/2008/11/23/detecting-session-timeouts-using-a-aspnet-mvc-action-filter/ 以获取示例。

【讨论】:

  • 不使用 MVC。有那么复杂吗?没有更简单的方法吗?
  • 如果您希望以自动化方式执行某项操作,如果页面在用户屏幕上并且他们处于空闲状态,则您需要创建一种 AJAX 方法,定期轮询 ASPX 页面并让它为您检查 IsNewSession 属性,然后响应 AJAX 请求,以便采取一些措施。
  • 如果我在 global.asax 的 Session_End 事件中添加 response.redirect("logout.aspx") 会怎么样?
  • @JustinRusso 否,因为这是服务器事件,而不是客户端事件。如果您希望客户端退出;您必须在客户端通过 javascript 执行此操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 2018-12-25
  • 1970-01-01
相关资源
最近更新 更多