没有Cookie和URL重写的会话处理

问题描述 投票:0回答:3

我有一个旧的网站(Servlet,JSP和Struts)。当前,会话管理通过使用cookie进行处理。我想重新设计该站点以使浏览器独立。

我知道还有另一种方法-URL重写,但是,这对我来说无法在应用程序中重写(编码)所有URL。

我正在寻找一个不会对我的代码产生太大影响的解决方案。如果有人有可行的解决方案,请提出建议。这将对我有很大的帮助。

java jsp url-rewriting session-cookies session-management
3个回答
1
投票

这没有道理。只需使用URL重写即可。否则,您基本上最终会重新发明整个HttpSession概念。您需要更改代码中使用HttpSession的每一行。与修复您的Web应用程序以利用URL重写相比,这将需要更多的时间。咬紧牙关,将其作为经验教训,这样您就不会犯相同的错误,即不对将来的项目进行URL重写,而这需要支持不支持cookie的浏览器。


0
投票

据我所能想象,URL或Cookie中的会话令牌之外只有三分之一的选择是肮脏和不切实际的,我不推荐它;)但是,我们开始:

在每个带有会话令牌的页面上都有一个隐藏的表单域,并且对服务器的每个请求都必须是包含隐藏域值的表单提交。


0
投票

从我的角度来看,当仅针对浏览器独立性进行优化(不包括通过GET进行的隐式会话)时,cookies已经是最佳解决方案。

用JavaScript重写所有a.href以添加会话哈希作为参数。

如果您追求真正的浏览器独立性,那么这不应该是您的解决方案,因为cookie比javascript支持更为广泛。较大的数据块可以存储在LocalStorage中。

sessionStorage.setItem("key", "value");

var key_value = sessionStorage.getItem("key");

易于设置,并且可以更快地处理较大的客户端会话数据。但是您仍然必须通过POST / GET AJAX调用将一些数据发送到服务器,以实际在服务器端跟踪会话。

Cookie应该是朋友,而不是敌人。

© www.soinside.com 2019 - 2024. All rights reserved.