2011-05-02 2 views
1

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

+0

exactement le même problème – kozla13

Répondre

0

Avez-vous enable sessions?

+0

Je ne travaille pas en mode moteur de l'application et de toute façon, a été en mesure de se connecter pour créer l'objet de session initialement. Le problème était que les requêtes rpc n'étaient pas identifiées en raison de l'absence d'identifiant de session dans son URL. Je l'ai résolu en utilisant des cookies pour la gestion de session. Pour plus de détails, consultez: http://technical-ramblings.blogspot.com/2011/05/accessing-session-objects-with-gwt-and.html –

Questions connexes