2010-06-15 4 views
6

dans mon application Grails j'ai deux ou trois simples filtres de sécurité (s'il vous plaît noter qu'il est juste un prototype, pas une application commerciale:Rediriger après la connexion?

securityCheckFilter(controller:'overview', invert:true) { 
      before = { 
       if(!session?.gaSession?.gaUser) { 
        flash.message = "You are not authorised to see this page. Please login." 
        redirect(controller:'overview',action:'login') 
        return false 
       } 
       return true 
      } 
     } 

Ce qui signifie que, en dehors du contrôleur « aperçu » qui gère la connexion/enregistrement, tous les autres contrôleurs requièrent une authentification Le problème est que je voudrais mettre en œuvre ce flux typique.

(1) tente d'utilisateur protégé URL redirection (2) pour ouvrir une session (3) connexion réussie (4) redirection vers url

Dans mon code, il fonctionne jusqu'au point 3, mais je suis absent 4.

Tous les conseils?

Répondre

6

C'est en fait assez facile. Juste

  • soumettre l'URI cible (du point 1 dans votre question) en tant que paramètre à l'action de connexion/vue
  • assurez-vous que votre formulaire de connexion avant ce paramètre à l'action d'authentification (par exemple. Via un champ caché)
  • dans l'action d'authentification, si la connexion a réussi, juste rediriger vers cette URI

pour obtenir l'URI cible (dans votre filtre), il suffit de retirer le chemin du contexte de l'attaquant URI:

def targetURI = request.forwardURI - request.contextPath 
+1

merci un million! – Mulone

Questions connexes