【问题标题】:MVC5 Identity/OWIN - Signout eventsMVC5 身份/OWIN - 注销事件
【发布时间】:2014-04-29 14:00:57
【问题描述】:

如何检测所有可能的 SignOuts?有没有办法在手动、超时和任何其他可能的方式进行 SignOut 时获取某些事件?

我需要知道用户身份验证何时结束,就像我知道它在调用 SingIn 时开始。

我同时使用内部帐户和外部帐户(如 Facebook)。

【问题讨论】:

  • 手动退出?是的。当他们在您的网站上时有一些超时功能?当然。全部注销?由于网络固有的不连贯性,这是不可能的。您为什么不解释为什么需要这样做,因为可能有更好的方法。
  • @Shoe 我想为新用户制作特殊的初始化页面。这是一个游戏。当用户注册时,第一次登录后我想将用户重定向到特殊页面,他将在其中创建角色。我不想让已经过身份验证和验证的用户能够转到其他页面,直到他创建 char。所以我发现将标志添加到数据库“isInitialized”,仅在用户已经完成字符创建时设置。但我不想在每个请求中都选择数据库来检查用户是否已经“isInitialized”。我想在登录时加载“isInitialized”到“缓存”,并在登录时清除它。
  • 这点也应该是为新玩家初始化所有数据库默认值。首次登录后,当我确定电子邮件已通过验证时,我可以为新用户填充数据库。
  • 您可以使用会话变量来存储它。
  • @Shoe 看来我需要:(。我只是想在没有会话的情况下这样做。总是有问题。如果会话在身份验证超时之前超时怎么办,我正在加载数据在登录时?如果会话开始时没有进行身份验证,并且我在 Session_start 加载数据。我需要始终在会话开始时注销,或者尝试在 2-3 个不同的位置加载数据。

标签: asp.net-mvc authentication asp.net-mvc-5 asp.net-identity owin


【解决方案1】:

我需要一个地方,当用户已经通过身份验证时,我可以初始化用户会话。下面是应该完成这项工作的代码,我根本不喜欢它。我需要在每个请求中检查会话,以确保会话中的标志已经加载并为当前用户加载。

将来,该标志可能是 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...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2014-08-24
    • 2021-06-08
    • 2014-11-28
    • 2014-03-07
    • 2020-03-11
    • 1970-01-01
    相关资源
    最近更新 更多