我可以在Global.asax中处理表单身份验证超时吗?就像global.asax中的Session_End一样?请指教。

我正在使用以下配置在Webconfig的auth表单中设置超时:

<forms name="formName" loginUrl="Login.aspx" protection="All" path="/" timeout="30"/>


谢谢大家! :)

最佳答案

不,您不能,因为超时是在身份验证Cookie上编码的,并且存在于浏览器中(而不是服务器端)。

您既可以进行自定义,也可以使用户超时保持在数据库上-但这并不那么容易,也可以使用global.asax上的Application_AuthenticateRequest在用户未通过身份验证之前在请求之前进行检查。 。

一个有关如何在用户未通过身份验证时删除会话数据的示例。关于全球Asax。

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
    // get the authCookie
    HttpCookie authCookie = Context.Request.Cookies[cookieName];
    // if is null then the use is not Authendicated
    if (null == authCookie && System.Web.HttpContext.Current.Session != null)
    {
        // now check if you have Session variables that you wish to remove.
        if(System.Web.HttpContext.Current.Session["flag"] == "1")
        {
            // remove your session data


        }
    }
}


您也许还可以与

if(HttpContext.Current.User == null || HttpContext.Current.User.Identity == null || !HttpContext.Current.User.Identity.IsAuthenticated)
{
        // now check if you have Session variables that you wish to remove.
        if(Session["flag"] == "1")
        {
            // remove your session data

        }
}

关于c# - 在ASP.net中处理表单例份验证超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16535675/

10-13 23:46