2013-09-07 2 views
1

J'utilise Activity/Place dans mon projet GWT, si l'utilisateur actuel n'est pas connecté, lorsqu'il navigue vers Place, l'utilisateur sera redirigé vers la page de connexion, si l'utilisateur s'est connecté, il sera alors redirigé vers cette page. Place. Comment mettre en œuvre cette logique de manière efficace?GWT: Un moyen d'annuler PlaceChangeEvent?

J'ai essayé de brancher PlaceChangeRequestEvent:

 eventBus.addHandler(PlaceChangeRequestEvent.TYPE,new PlaceChangeRequestEvent.Handler() { 
      @Override 
      public void onPlaceChangeRequest(PlaceChangeRequestEvent event) { 
       Place newPlace = event.getNewPlace(); 
       if (newPlace instanceof MyProtectedPlace && userNotLoggedIn()) { 
        event.goTo(new LoginPlace()); 
       } 
      } 
     }); 

Malheureusement, il ne fonctionne pas depuis la demande en cours pour MyProtectedPlace n'est pas annulé. Oui, je peux vérifier cela lorsque l'utilisateur est sur le point de quitter la position actuelle, mais cela ne sera pas efficace car la logique de vérification sera éparpillée dans tout le programme.

Merci.

Répondre

0

Vous pouvez le faire un peu différemment, je pense. Disons que vous voulez un endroit appelé SecuredPlace pour être accessible seulement après la connexion. Vous avez une SecuredActivity correspondante.

Ce que vous pouvez faire est, lorsque vous démarrez votre SecuredActivity, vous vérifiez si votre utilisateur est connecté. Sinon, vous faites placeController.goTo (new LoginPlace()).

Si l'utilisateur est connecté, vous continuez. Comme le début est appelé par le cadre, il n'y a aucun moyen de sauter cette étape qui, à mon avis, le rend suffisamment sécurisé. Mais vous devez mettre en œuvre votre sécurité sur les appels réseau à votre backend pas sur les lieux. Chaque fois que vous appelez le backend, vous vérifiez que l'utilisateur est authentifié et qu'il a les bonnes informations d'identification. Si ce n'est pas le cas, vous pouvez intercepter le rappel, vérifier qu'il s'agit d'une erreur 403, puis rediriger automatiquement vers votre page de connexion. Parce que si vos appels backend ne sont pas sécurisés, sécuriser vos places est inutile.

Questions connexes