2011-06-29 7 views
1

J'utilise le service utilisateur GAE pour l'authrnication de mon application GWT. Selon que l'utilisateur est connecté, l'utilisateur est présenté avec LoginPage/Dashboard.Service utilisateur GWT et AppEngine

GWT application appelle une Auth Servlet (window.location.assign ("/ googleauth"). L'application faisant décharger qui transfère ensuite le contrôle d'authentification Google page, après l'authentification nous redirigés vers servlet CallBack

Je peux vérifier si l'utilisateur est loggedIn avec succès dans Callback Servlet Toutefois, si je réoriente simplement revenir à ma demande la connexion de session est perdu

les charges d'application à partir de zéro

Si je fais un cookie -...>

HttpSession session = request.getSession(); Chaîne sessionid = session.getId(); // Obtenir sessionID de réponse du serveur à votre connexion demande Cookie cookie = nouveau Cookie ("sid", sessionid); response.addCookie (cookie); response.sendRedirect (AppURL.getApplicationBaseURL());

Dans mon code client check ->

Chaîne idSession = Cookies.getCookie ("sid"); si (idSession! = Null) {// afficher tableau de bord}

Est-ce la façon dont je me sers de sécurité? Combien de temps les cookies sont-ils valables?

Répondre

1

Vous avez dit:

I simply redirect back to my application the session login is lost. 

Cela ne devrait pas se produire. Une fois que vous vous connectez, la session devrait être là jusqu'à ce que vous vous déconnectiez ou que vous expiriez (vous pouvez le définir dans les paramètres GAE).

Vous pouvez simplement effectuer un appel GWT-RPC sur le serveur et vérifier si l'utilisateur est connecté: UserServiceFactory.getUserService().isUserLoggedIn().

Remarque: si vous recherchez des cookies de session, AppEngine utilise différents noms de cookies dans les serveurs de production et de développement. Il utilise ACSID cookie en production et dev_appserver_login.

+0

Oui, je redirige simplement en utilisant response.sendRedirect (""); Je fais un appel GWT RPC et je reçois faux pour l'utilisateur connecté. Les paramètres d'App Engine ont Durée d'expiration des cookies 1day set –

+0

Essayez de vérifier la valeur du cookie 'ACISD' (ou' dev_appserver_login') à la fois sur le servlet CallBack et votre page GWT. Vérifiez également le chemin du cookie ACSID (dans le navigateur). –

+0

Im utilisant une configuration similaire à la vôtre: J'ai une page GWT, qui transmet à la page de connexion en cas de besoin. La page de connexion est JSP (OpenID), lors de la sélection, elle est redirigée vers la page de connexion Google. Une fois connecté, Google redirige directement vers ma page GWT. Je n'ai pas de page de rappel intermédiaire comme vous le faites. Tout fonctionne comme prévu. –