【问题标题】:ASP.NET authentication timeout and Logout EventsASP.NET 身份验证超时和注销事件
【发布时间】:2012-09-17 14:02:13
【问题描述】:

根据我在谷歌上搜索问题后的理解,ASP.NET 用于用户身份验证的身份验证票证会在设定的时间后过期,此时任何回发或页面加载都会导致用户被重定向到登录页面。但是,当票证超时时不会触发任何事件。因此,如果我想实现一个注销事件,它不会在票证到期时被触发。

我的问题是:有没有办法规避这个问题?我需要在用户注销我的网站时登录,但是如果票证超时并且用户被重定向到登录页面并认为他们已经注销所以他们只是关闭浏览器,我将永远不会记录何时他们登出。

谢谢

【问题讨论】:

  • 无法保证知道用户是否已注销,因为可能会发生许多会干扰的事情。例如,如果工作进程被重置或回收。由于“登录”不是实际事件,并且在 asp.net 中没有跟踪,因此注销也不是。您能做的最好的事情就是超时,无论是在 Application_EndSession 中还是在其他地方。您还应该知道关闭浏览器不会“注销”,因为身份验证 cookie 仍然有效。用户可以重新打开浏览器并再次导航到该页面,但仍处于“登录状态”。
  • 我的建议是忘记这个“功能”,因为不可能确保它是准确的。
  • 不幸的是,这正是我所害怕的。我想我必须想出一个解决方法。

标签: c# asp.net forms authentication


【解决方案1】:

我通过将自定义对象放入 asp.net 缓存中看到了这种行为。您将缓存超时设置为与会话相同的时间范围,并在每次用户访问网站时刷新它。当缓存超时方法被触发时,你知道用户会话结束了。

虽然这是一种肮脏的做法,应用程序可以重新启动,用户可以返回,会话结束,但这并不意味着用户退出。

【讨论】:

    猜你喜欢
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    相关资源
    最近更新 更多