相关疑难解决方法(0)

如何在浏览器标签中区分会话?

在使用JSP和Servlets在java中实现的Web应用程序中; 如果我在用户会话中存储信息,则从同一浏览器的所有选项卡共享此信息.如何在浏览器选项卡中区分会话?在这个例子中:

<%@page language="java"%>
<%
String user = request.getParameter("user");
user = (user == null ? (String)session.getAttribute("SESSIONS_USER") : user);
session.setAttribute("SESSIONS_USER",user);
%>
<html><head></head><body>
<%=user %>
<form method="post">
User:<input name="user" value="">
<input type="submit" value="send">
</form>
</body></html>
Run Code Online (Sandbox Code Playgroud)

将此代码复制到jsp页面(testpage.jsp)中,将此文件部署在服务器上的Web应用程序的现有上下文中(我使用Apache Tomcat),然后使用正确的URL(localhost/context1/testpage.jsp)打开浏览器(FF,IE7或Opera ),键入您在输入中的姓名并提交表格.然后在同一浏览器中打开一个新选项卡,然后您可以在新选项卡上看到您的名称(从会话中获取).小心浏览器缓存,有时似乎不会发生,但它在缓存中,刷新第二个选项卡.

谢谢.

browser jsp servlets web-applications sessionid

130
推荐指数
8
解决办法
24万
查看次数

在标签之间共享会话

我有JAVA Web应用程序,我需要停止在浏览器选项卡之间共享会话,这意味着

用户打开浏览器,登录到他的帐户并在同一浏览器的新选项卡中打开特定页面.根据默认设置,会话将共享到新选项卡,用户将自动登录到新选项卡.任何人都可以告诉我这是如何停止的,所以我至少可以在几个敏感页面中限制它,如果不是整个应用程序.

session jsp java-ee browser-tab

7
推荐指数
1
解决办法
2万
查看次数

如何阻止Spring Security创建新会话?

脚本

  1. 我重新启动服务器和浏览器,因此没有会​​话数据.
  2. 我去www.someurl.com公共访问页面.我的控制器让我得到一个会话HttpSession session=request.getSession(true);
  3. 我点击www.someurl.com/admin限制访问页面的飞机锚点链接,该页面将在新选项卡中打开.Spring Security 3拦截了这一点并对凭证提出了挑战.我成功登录.
  4. 我将通过www.someurl.com返回上一个选项卡并刷新页面.

问题

我在www.someurl.com的控制器中注意到,会话ID在步骤2和步骤4中是不同的.看起来Spring Security创建了一个新会话,该会话现在附加到公共页面请求.为什么会发生这种情况,我是否可以强制Spring Security使用现有会话?

追踪的场景

  1. 重新启动浏览器和服务器,因此不存在会话数据.
  2. 我去www.someurl.com.控制器已注入请求.request.session为null.getSession(true)给我一个id为87B091B12F38D44C53AF0DA9E2147484的会话.LogService获取请求对象并且也执行getSession(true)但是获取了具有id 87B091B12F38D44C53AF0DA9E2147484的会话,所以到目前为止一切都很好.
  3. 我点击/ admin.页面在新选项卡中打开.我登录
  4. 我刷新www.someurl.com.控制器已注入请求.request.session不为空.会话ID为547DF59035C91783D783BAEF4A15FBFF.

security spring httpsession

3
推荐指数
1
解决办法
2万
查看次数