我有一个在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
标签,但事情变得最糟糕,因为现在我甚至无法登录。
发生了什么,我能做些什么来解决这个问题并让我的系统恢复工作?
您的浏览器开始拒绝Cookie,出于某种原因(或者某些网络基础设施更改从响应或请求中删除了Cookie)。可以避免使用Cookie,但所有网址必须正确编码(例如使用标签)。检查cookie消失的位置。询问服务器管理员他做了什么来引起这个问题。 –
对不起。情况并非如此。我说这是在管理员更改一些服务器之后开始的。我怎样才能尝试每个浏览器开始拒绝Cookie?无处不在。一些消息?不在浏览器中。我之前没有在URL中看到过这个ID。 –
据我所知,唯一的变化是服务器从http://eic.cefet-rj.br/sagitarii重定向到http://eic.cefet-rj.br/rukbat/app/sagitarii。这是外部访问重定向到内部网络(: \ sagitarii) –