现在用户在他的权限中有许多角色,我将允许他单击 href 并在新窗口中扮演另一个角色。每个角色都有自己的会话。
由于浏览器打开窗口无法打开新会话,我必须在服务器端找到一种方法。
但是 request 不支持 request.createSession 或 request.setSession(new Session()),我怎样才能为这个用例分离一个新的会话?
您可以通过HttpSession#invalidate old session 创建一个新会话,但不能保留旧会话。愿以下几点对您有所帮助
你没有来自tomcat的支持。你必须自己这样做。
下一个策略不适用于集群的 tomcat。这里没有保证。
更改为新会话
getAttributeNames()
并将getAttribute(String)
它们全部添加到HashMap
.HashMap
化为临时文件或静态并发映射,以供您稍后访问。还存储当前HttpServletRequest.getRequestURL()
用于以后的重定向。你必须序列化。removeAttribute(String)
所有属性。恢复到旧会话
HashMap
.removeAttribute(String)
所有内容HashMap
和setAttribute(String, Object)
在会议上。我懒得编写代码并自己测试它,但我认为这会奏效。