2011-06-29 3 views
1

J'ai le problème suivant. C'est la situation que j'ai lorsque l'utilisateur se connecte à l'application et enregistre l'historique. Le workflow est: 1. Il y a une vérification si l'utilisateur est déjà connecté - à savoir si l'objet utilisateur est dans la session sinon le formulaire de connexion est chargé et un nouveau jeton est ajouté (History.newItem ("login")) si oui alors l'utilisateur est libre d'entrer le formulaire principal dans l'application et un jeton est ajouté (History.newItem ("main")). Après que l'utilisateur a réussi l'entrée et l'utilisateur, un nouveau jeton est ajouté (History.newItem (main)) et entrez le formulaire principal de l'application.Problème de connexion avec l'historique GWT

Et voici le problème, après que la forme principale est affichée et que l'utilisateur décide de cliquer sur "Retour" dans le navigateur puis "jeton de connexion" est pris de la pile et le formulaire de connexion est chargé. Mais laissons supposer que l'utilisateur décide de cliquer sur le bouton "Forward" du navigateur, puis le jeton "principal" est pris et le formulaire principal est affiché. Je n'aime pas ce scénario et je veux faire: Après "retour" bouton pour apparaître une boîte de dialogue et demander "Laisser l'application?" avec les boutons "Oui" et "Non", mais je ne peux pas identifier quand je me connecte régulièrement ou que je me connecte "en arrière/en avant" afin de faire quelque chose.

Tout conseil ou approches .. probablement ma conception est faux ..

Toute façon de distinguer le dos ou l'action en avant?

Répondre

4

Si vous voulez éviter tout cela, ne mettez pas "login" dans l'historique.

Dans ce cas, vous pouvez implémenter le panneau de connexion comme boîte de dialogue modale. Ainsi, lorsque l'utilisateur (ou l'application) demande une connexion, une boîte de dialogue modale s'affiche avec le champ de saisie de connexion. Lorsque vous avez terminé avec la connexion, fermez simplement la boîte de dialogue et rechargez la page en cours (pour refléter les changements affectés par la connexion).

Vous pouvez utiliser 'History.fireCurrentHistoryState()' pour forcer le rechargement de la page en cours. Cela appelle vos gestionnaires d'historique, mais cela n'affecte pas l'historique (aucun jeton n'est ajouté à la pile d'historique).

+0

Merci Peter, comme toujours une bonne solution de votre part. :) – adgfs

+0

Peter, j'ai une autre question. Quel devrait être le comportement après l'utilisateur cliquez sur "Déconnexion", imaginons que l'utilisateur est sous forme principale et que vous souhaitez quitter l'application en cliquant sur "Déconnexion" supprimer l'objet utilisateur de la session et charger le formulaire de connexion, mais en cliquant sur "Précédent" garder le jeton "principal" ... comment puis-je gérer cette situation? L'historique commence à partir du formulaire principal qui est en cours de chargement après une connexion réussie. – adgfs

+0

Pour chaque page (c'est-à-dire jeton) qui nécessite l'authentification de l'utilisateur, vous affichez la boîte de dialogue et lorsque vous avez terminé, passez à la page. Pour cette raison, il est bon de mettre la vérification d'authentification dans votre gestionnaire d'historique après avoir parcouru l'arbre de décision et avant d'afficher le contenu de la page. –