IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

Formulaire de connexion et redirection sur la page précédente


Sujet :

Ruby on Rails

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Points : 84
    Points
    84
    Par défaut Formulaire de connexion et redirection sur la page précédente
    Bonjour,

    J'ai une problématique que je pense assez classique mais je n'ai pas trouvé de solution sur le forum...

    J'utilise le système d'authentification acts_as_authentificated (vraiment pratique en passant) et je suis encore (oui je sais c'est pas bien ...) sur rail 1.

    J'ai placé le formulaire de connexion dans application.rhtml pour qu'il s'affiche sur toutes les pages lorsque l'utilisateur n'est pas loggué.

    J'aimerais que lorsque l'on valide le formulaire de connection on puisse retomber sur la page ou l'on était. Pour l'instant je n'arrive que à réorienter le visiteur vers une page spécifique avec un redirect_to.

    J'ai pensé à faire une requète Ajax (vérifier les paramètres de connexion, authentifier la boite de connexion et rafraichir la boite de connexion), ou a utiliser les flashs.

    Y-a-t-il une fonction déjà comprise dans le code de rails pour rediriger vers la même page après avoir utiliser une fonction ? Ou quelle est l'approche à privilégier pour résoudre ce problème ?

    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 171
    Points : 91
    Points
    91
    Par défaut
    C'est pas déjà implémenté dans act_as_authenticated?
    Avec ces 2 fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        # Store the URI of the current request in the session.
        #
        # We can return to this location by calling #redirect_back_or_default.
        def store_location
          session[:return_to] = request.request_uri
        end
     
        # Redirect to the URI stored by the most recent store_location call or
        # to the passed default.
        def redirect_back_or_default(default)
          session[:return_to] ? redirect_to(session[:return_to]) : redirect_to(default)
          session[:return_to] = nil
        end
    (authenticated_system.rb dans /lib)
    Tu stockes l'url de destination dans ta variable de session et tu y fais appel une fois l'authentification validée.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Points : 84
    Points
    84
    Par défaut
    c'est ce que je pensais aussi mais redirect_back_or_default() fait automatiquement la redirection vers la page de défaut et pas la page ou l'on se connectait ...

    voila ma ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    redirect_back_or_default(:controller => 'account', :action => 'moncompte')

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 652
    Points
    652
    Par défaut
    Ta variable de session est surement vide...
    Ce qui explique que ça te redirige vers :default
    Il doit vraisemblablement manquer un before_filter :store_location dans le controller application.rb, juste apres include AuthenticatedSystem

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Points : 84
    Points
    84
    Par défaut
    Merci,

    Je n'avais effectivement pas ajouté le 'before_filter :store_location' dans application.rb.

    Le problème maintenant c'est que la redirection s'effectue vers l'action 'login' du controller 'account' plutôt que sur la page dans laquelle l'utilisateur était.

    Pour le lien de déconnexion, la redirection s'effectue sur la page de défaut systématiquement (page d'acceuil) même lorsque la page ne nécessitait pas d'être loggué.

    Le formulaire d'identification est dans application.rhtml et les liens de connexion/déconnexion mènent aux actions classsiques de acts_as_authemtificated qui contiennent les 'redirect_back_or_default()'

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 652
    Points
    652
    Par défaut
    Hummmm
    Essaye donc de rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    skip_before_filter :store_location
    tout en haut de AccountController
    Ce qui evitera d'écraser la variable de session, maintenant qu'elle est chargée, c'est dommage

    Au passage, c'est acts_as_authenticated, et non pas acts_as_authentificated et encore moins acts_as_authemtificated (lol)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Points : 84
    Points
    84
    Par défaut
    Parfait, tout marche bien et cela m'a permis de comprendre un peu mieux le fonctionnement de acts_as_authenticated (et faire un peu plus attention à son orthographe.)

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Redirection sur la page précédente?
    Par algerino77 dans le forum Langage
    Réponses: 2
    Dernier message: 20/10/2014, 16h48
  2. redirection sur nouvelle page
    Par kaygee dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/10/2007, 15h12
  3. Réponses: 1
    Dernier message: 20/01/2007, 14h06
  4. redirection sur une page
    Par fulgaro dans le forum Langage
    Réponses: 3
    Dernier message: 09/01/2006, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo