2015-10-20 42 views
1

我有一个在Apache Tomcat 7中运行并使用Struts2的Web应用程序。 我的登录系统是通过将用户对象在一个会议上提出:我的Web应用程序在URL中出现JSESSIONID后停止工作

(绕过“如果”和“尝试”是明确的..)

UserService es = new UserService(); 
User user = es.login(username, password); 
ActionContext.getContext().getSession().put("loggedUser", user); 

然后,我试图让用户拦截器中来自该会话的对象。如果可以,则有人登录。如果没有,通过返回“notLogged”,这将是渔获Struts2的全球结果的struts.xml到登录页面:

public String intercept(ActionInvocation invocation) { 
    User loggedUser = (User)invocation.getInvocationContext().getSession().get("loggedUser"); 
    if (loggedUser == null) { 
     return "notLogged"; 
    } 
    try { 
     return invocation.invoke(); 
    } catch (Exception ignored) { 
     return "notLogged"; 
    } 
} 

struts.xml的

<global-results> 
    <result name="notLogged">/index.jsp</result> 
</global-results> 

一切都很好,直到服务器管理员进行一些维护,并且“jsessionid”开始出现在URL中。在此之后,我无法再导航我的系统(直到我将这个ID复制并粘贴到每个我想去的URL中,无法形成操作目的地)。我仍然可以登录,并且看到User对象仍然很有吸引力,但是如果没有此ID,我无法前往任何目的地。

我试过这个:https://fralef.me/tomcat-disable-jsessionid-in-url.html,并把COOKIE放在我的web.xml中的tracking-mode标签,但事情变得最糟糕,因为现在我甚至无法登录。

发生了什么,我能做些什么来解决这个问题并让我的系统恢复工作?

+1

您的浏览器开始拒绝Cookie,出于某种原因(或者某些网络基础设施更改从响应或请求中删除了Cookie)。可以避免使用Cookie,但所有网址必须正确编码(例如使用标签)。检查cookie消失的位置。询问服务器管理员他做了什么来引起这个问题。 –

+0

对不起。情况并非如此。我说这是在管理员更改一些服务器之后开始的。我怎样才能尝试每个浏览器开始拒绝Cookie?无处不在。一些消息?不在浏览器中。我之前没有在URL中看到过这个ID。 –

+0

据我所知,唯一的变化是服务器从http://eic.cefet-rj.br/sagitarii重定向到http://eic.cefet-rj.br/rukbat/app/sagitarii。这是外部访问重定向到内部网络( \ sagitarii) –

回答

2

这显然是由cookie路径不匹配造成的。

如果请求URL路径与cookie路径相匹配,浏览器将仅返回cookie。

cookie path : /abc 
request path: /abc/xyz // match 
request path: /xyz  // no match 

默认情况下,Tomcat将会话cookie路径设置为web应用程序路径,以便cookie不会发送到其他web应用程序。但是,就您而言,中间件会更改请求URL路径,因此浏览器会观察到不同的路径,从而导致Cookie路径不匹配。

在大多数情况下,我建议设置cookie路径为“/”,所以它的所有请求匹配到服务器(假设有Tomcat上只有一个应用程序)

// context.xml 
<Context sessionCookiePath="/"> 
+1

完美!感谢解释。了解原因要更好地理解错误,而不仅仅是复制和过去。 –

+0

@ bayou.io如果将'/'设置为cookie路径,JSESSIONID将在应用程序之间重叠,不是吗? –

+1

@ bayou.io:正如Andrea Ligios所说,请编辑您的回答,以便在'context.xml'解决方案中显式引用''(我评论我的问题)。我懒得回答自己,并想接受你的解释。 –

相关问题