如何检测所有可能的SignOuts?当手动,超时和任何其他可能的方式进行SignOut时,有没有办法获得一些事件?
我需要知道用户身份验证何时结束,就像我知道它在调用SingIn时启动一样。
我使用内部帐户和外部帐户(如Facebook)。
答案 0 :(得分:0)
我需要一个可以在用户已经过身份验证时初始化用户会话的位置。下面是应该完成工作的代码,我完全不喜欢它。我需要检查每个请求的会话,以确保会话中的标志已经加载并为当前用户加载。
将来该标志可能是DB的一整类属性。
无法相信没有更好的方法来检测用户何时签名/退出。
我所做的是:
void Session_Start(object sender, EventArgs e)
{
InitializeSession_Authenticated();
}
protected void Application_AcquireRequestState(Object sender, EventArgs e)
{
InitializeSession_Authenticated();
}
private void InitializeSession_Authenticated()
{
if (HttpContext.Current.Session == null)
return;
if (!System.Threading.Thread.CurrentPrincipal.Identity.IsAuthenticated)
return;
string userName = System.Threading.Thread.CurrentPrincipal.Identity.Name;
if (HttpContext.Current.Session[SESSION_VAR.USER_ISINITIALIZED] == null ||
HttpContext.Current.Session[SESSION_VAR.USER_NAMEFORSESSION] != userName)
{
HttpContext.Current.Session[SESSION_VAR.USER_NAMEFORSESSION] = userName;
HttpContext.Current.Session[SESSION_VAR.USER_ISINITIALIZED] = GetFlagFromDB(userName);
}
}
编辑:@Shoe谢谢:P ...