避免会话ID重用asp.net

时间:2014-02-07 13:47:33

标签: c# asp.net-mvc-4 session-timeout sessionid

我使用FormsAuthentication.SetAuthCookie来使用基于cookie的会话。

是否有一个简单的方法,以便我可以设置过期的sessionId的重用,每次会话到期时ASP.NET都会创建一个新的会话ID。

感谢。

2 个答案:

答案 0 :(得分:0)

你必须处理几个不同的案件。第一种是当有人点击退出按钮时。第二个是会话本身已过期(但没有发生用户操作)。

在第二个实例中,表单身份验证将自动将您发送到您在web.config中定义的登录页面。

您可以执行以下操作

    [AllowAnonymous]
    public ActionResult Login()
    {
        Response.Cookies.Add(CreateExpiredBlankCookie("ASP.NET_SessionId"));
        return View();
    }

    private HttpCookie CreateExpiredBlankCookie(string name)
    {
        var cookie = new HttpCookie(name, "");
        cookie.Expires = DateTime.Now.AddDays(-1);
        return cookie;
    }

答案 1 :(得分:-1)

您可以使用Session.Abandon()来阻止会话重用。

由于HTTP是无状态的,因此您无法知道用户何时关闭了浏览器。但是,您可以在每个页面上放置一个注销按钮,并且作为按钮处理的一部分,调用Session.Abandon以防止第三方重复使用它。

除此之外,还需要HTTPS并确保您的Cookie也需要HTTPS。