【问题标题】:sql sessionState time out vs forms authentication timeoutsql sessionState 超时与表单身份验证超时
【发布时间】:2011-04-27 12:13:49
【问题描述】:

如果会话已空闲 5 分钟,我想在登录页面上显示“您的会话已过期”。

Sql Session State 和 Form Authentication Time Out 的超时值应该是多少:

  1. 一样吗?
  2. 会话状态>表单超时
  3. 表单超时 > 会话时间。

理想情况下,如果有人能解释上述之间的差异,我们将不胜感激。

目前,我的代码如下所示,即使在登录重定向空闲 5 分钟后 Session["SessionID"] 也不是 Null:

On Session_Start()
 Session["SessionID"] = Guid.NewGuid();

在 LogOn.cshtml 上:

 @{
        string sessionExpiredMsg = string.Empty;

        HttpContext ctx = HttpContext.Current;
        if (ctx.Session["SessionID"] == null)
        {
            sessionExpiredMsg = "Your session has expired. Please re-login again.";
        }
    }
@

在 web.config 上:

<sessionState
timeout=5....

<authentication mode="forms"
 timeout=5....

谢谢。

【问题讨论】:

    标签: asp.net


    【解决方案1】:
    • 会话状态超时意味着您的 asp.net 会话将在 x 分钟后到期。这并不意味着您不再经过身份验证。
    • 表单超时意味着在 x 分钟后,系统会提示您再次登录(不再进行身份验证)。

    如果您的会话状态超时持续时间比您的表单超时时间长,这不是问题,因为一旦您再次登录,如果未过期,您将检索最后一个。

    【讨论】:

    • 谢谢lnu,我用无效的代码更新了我的问题。
    • ctx.Session["SessionID"] 即使在登录重定向之后仍然包含该值。不知道为什么。
    • 是的,这就是我使用的,但不起作用。即使重定向到登录页面,会话也不为空
    • 尝试为您的表单超时设置 10 分钟,为您的会话设置 1 分钟。我和你做了同样的事情,我的会话在 1 分钟后是空的(和 Session.IsNew==true)。但它保持相同的 sessionid。
    猜你喜欢
    • 2013-07-22
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多