【问题标题】:Disable Cookieless Session .Net MVC 5禁用无 Cookie 会话 .Net MVC 5
【发布时间】:2017-12-24 16:30:56
【问题描述】:
我们之前在我们的应用程序上启用了无 cookie 会话。我们已禁用此功能并转到会话 cookie,但是我们遇到了问题。在其 URL 中将会话 ID 作为书签的用户仍然可以导航到 URL 中具有会话 ID 的站点。我已将其设置为不重新生成过期的会话,但它仍然允许它。它还最终创建了一个会话 cookie,然后我们得到随机会话丢失。我想出了一些不稳定的解决方法,例如使用 URL 重写将其剥离并通过 javascript 将其剥离,但这似乎很糟糕。有什么我缺少的内置功能可以帮助解决这个问题吗?这并不重要,但我会补充说我们正在使用状态服务器。
【问题讨论】:
标签:
c#
asp.net
asp.net-mvc
session
cookies
【解决方案1】:
对于寻找不需要用户更新书签的解决方案的其他人,我可以在我的 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;
}
【解决方案2】:
URL 重写是一个很好的解决方案。
但是,如果您希望用户更新他们的书签(这样您最终可以停用 URL 重写),您可以考虑让您的 URL 重写将他们发送到一个页面,告诉他们这样:
然后为他们提供登录等常用选项。