J'exécute une application GWT qui gère un cache utilisateur dans un objet de session. J'utilise Spring Security 3.0.5.Obtention d'une session NULL dans l'application GWT en mode Web, mais pas en mode hébergé
Voici le code que je utilise pour obtenir l'objet de la session
ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpSession session = attr.getRequest().getSession(false);
if(session != null)
return session;
else
throw new IllegalStateException("Session Expired");
En mode hébergé-à-dire serveur jetée, tout fonctionne bien et je suis en mesure de récupérer l'objet de session, mais en mode web-à-dire tomcat 6, objet de la session est retourné null
J'utilise les entrées suivantes dans web.xml, requis pour exécuter le code ci-dessus
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
MISE À JOUR
Suite est les paramètres de sécurité du printemps, je me sers
<http>
<intercept-url pattern="/**Phoenix.html*" access="ROLE_ADMIN"/>
<form-login authentication-failure-url="/login.html" default-target-url="/Phoenix.html?gwt.codesvr=127.0.0.1:9997" always-use-default-target="true"/>
<remember-me/>
<logout />
<access-denied-handler error-page="/login.html"/>
<session-management><concurrency-control/></session-management>
</http>
MISE À JOUR
Cela se produit parce que en mode Web après la connexion SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString()
retours "AnonymousUser" en mode hébergé la même expression renvoie les informations de connexion de l'utilisateur connecté. Voici les urls que j'utilise mode hébergé: http://127.0.0.1:8888/Phoenix.html?gwt.codesvr=127.0.0.1:9997
mode web: http://localhost:8185/PhoenixMCDemo/Phoenix.html;jsessionid=E56C80258410D102E6B51EFEE5AA0E91
exactement le même problème – kozla13