禁用无Cookie会话.Net MVC 5

时间:2017-07-19 12:01:19

标签: c# asp.net asp.net-mvc session cookies

我们以前在应用程序上启用了无cookie会话。我们已禁用此功能并转到会话cookie,但我们遇到了问题。将URL中的会话ID作为书签的用户仍然可以使用URL中的会话ID导航到该站点。我已将其设置为不重新生成过期的会话但仍然允许它仍然允许它。它最终还会创建一个会话cookie,然后我们会得到随机会话丢失。我提出了一些不稳定的解决方法,比如使用URL重写剥离它并通过javascript剥离它但这看起来很糟糕。我有什么内置的东西可以帮到这个吗?这并不重要,但我会补充说我们正在使用状态服务器。

2 个答案:

答案 0 :(得分:2)

对于其他寻求不需要用户更新书签的解决方案的人,我可以在Global.asax Application_BeginRequest中使用以下内容:

void Application_BeginRequest(object sender, EventArgs e) {
    if (CookielessValuesExist()) {
        Response.Redirect(Request.Url.OriginalString, true);
    }
}

private bool CookielessValuesExist() {
    string cookieless = Request.Params["HTTP_ASPFILTERSESSIONID"];
    if (string.IsNullOrWhiteSpace(cookieless)) {
        return false;
    }

    return true;
}

答案 1 :(得分:0)

URL重写是一个很好的解决方案。

但是,如果您希望用户更新他们的书签,(这样您最终可以退出URL重写),您可能会考虑让您的URL重写将它们发送到一个页面告诉他们:

  • 糟糕!该链接不起作用。

然后给他们通常的选项登录等。