我有两个问题。我将把我的问题分成两部分并概述。我不完全确定我需要发布的代码,所以如果我错过了一些,请告诉我,我会帮助。
概述:
当浏览器关闭时,我需要签出用户。
问题1:
如何在浏览器关闭时调用Session_End?
我做了一些关于如何关闭它的阅读,似乎在浏览器结束时检测Session是否已经结束的唯一方法是在我的web配置中使用一个名为“InProc”的东西。我试了一下它似乎根本没有改变任何东西。所以我想知道是否还有另一种解决方法。
Session_End中:
protected void Session_End() {
if (User.Identity.IsAuthenticated) {
}
}
问题2:如何在Session_End上签署用户?
一旦程序调用了虚空,我需要签署用户,因为它导致程序中的错误。我正在使用Authentification经理。
Session_End中:
protected void Session_End() {
if (User.Identity.IsAuthenticated) {
AuthenticationManager.SignOut();
}
}
答案 0 :(得分:2)
使用InProc会话,会话超时时调用Session_End方法。这是(默认情况下)用户上次访问您网站后 20分钟(请求新页面)。请注意,这些20分钟可能会花费大量精力阅读您网站的单个页面 - 他的会话仍然关闭。
当用户关闭浏览器或导航离开您的网站时,无方式可以检测到。
答案 1 :(得分:0)
您需要使用Global.asax文件。它应该已经包含此方法,您需要做的就是添加代码的内容。
protected void Session_End(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
{
AuthenticationManager.SignOut();
}
}