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 :

[DEBUTANT] PB de session


Sujet :

Ruby on Rails

  1. #1
    Membre régulier Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Points : 82
    Points
    82
    Par défaut [DEBUTANT] PB de session
    Hello,

    voici mon problème. J'ai la méthode suivante dans une classe UsersController :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def login
        if request.post?
          @user = User.find_by_username(params[:login])
    	if @user and @user.password_is? params[:password]
    	   session[:uid] = @user.id           
     
               redirect_to :controller => 'games'
    	else 
    	   @auth_error = 'Wrong username or password'
    	end
        end
      end
    Dans mon GamesController j'aimerais récupérer le username du l'utilisateur enregistré dans la session. Comment puis-je faire ?
    Si j'ai bien compris, session[:uid] contient l'id de l'utilisateur courant. Mon objet game comprend un attribut host qui doit contenir un username.
    J'ai donc essayé de faire @game.host = User.find(session[:uid]) mais cela n'a pas l'air de fonctionner...

    Merci d'avance !
    Y a des jours, faut pas me chercher... et y a des jours tous les jours !

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Points : 153
    Points
    153
    Par défaut
    essaye comme ça

    session[:user]

    Citation Envoyé par Blaede Voir le message
    Hello,

    voici mon problème. J'ai la méthode suivante dans une classe UsersController :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def login
        if request.post?
          @user = User.find_by_username(params[:login])
    	if @user and @user.password_is? params[:password]
    	   session[:uid] = @user.id           
     
               redirect_to :controller => 'games'
    	else 
    	   @auth_error = 'Wrong username or password'
    	end
        end
      end
    Dans mon GamesController j'aimerais récupérer le username du l'utilisateur enregistré dans la session. Comment puis-je faire ?
    Si j'ai bien compris, session[:uid] contient l'id de l'utilisateur courant. Mon objet game comprend un attribut host qui doit contenir un username.
    J'ai donc essayé de faire @game.host = User.find(session[:uid]) mais cela n'a pas l'air de fonctionner...

    Merci d'avance !

  3. #3
    Membre régulier Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Points : 82
    Points
    82
    Par défaut
    J'ai remplacé session[:uid] par session[:user] mais ça ne change rien.
    (d'ailleurs je peux mettre session[:tartampion] ça ne change rien, si ?)

    Dans UsersController j'ai donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def login
        if request.post?
          @user = User.find_by_username(params[:login])      
    	if @user and @user.password_is? params[:password]
    	   session[:user] = @user.id           
     
               redirect_to :controller => 'games'
    	else 
    	   @auth_error = 'Wrong username or password'
    	end
        end
      end
    et dans GamesController j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    before_filter :check_auth
     
    def check_auth    
        unless session[:user]
          flash[:error] = 'You need to be logged in to access this panel'
          redirect_to :controller => 'users', :action => 'login'
        end
      end
     
    def create        
        @game = Game.new(params[:game])
        @user = User.find(session[:user])
        @game.host = @user.username
     
        respond_to do |format|
          if @game.save        
            format.html { redirect_to(@game) }
            format.xml  { render :xml => @game, :status => :created, :location => @game }
          else
            format.html { render :action => "new" }
            format.xml  { render :xml => @game.errors, :status => :unprocessable_entity }
          end
        end
      end
    Enfin voici la vue /views/games/new.html.erb :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <h3>New game</h3>
                Please choose the number of players and the time allowed to play your turn.
                You may assign a password if you wish to play with your friends.<hr />
                <div id="contenu">
                <%= error_messages_for :game %>
     
                <% form_for(@game) do |f| %>
                <p>
                <b>Number of players</b><br />
                <%= radio_button :f, :players, "2", :checked=>"checked" %> 2
                <%= radio_button :f, :players, "3" %> 3
                <%= radio_button :f, :players, "4" %> 4
                <%= radio_button :f, :players, "5" %> 5<br/>
                </p>
     
                <p>
                <b>Timer</b><br />
                <%= radio_button :f, :timer, "3", :checked=>"checked" %> 3 min
                <%= radio_button :f, :timer, "5" %> 5 min
                <%= radio_button :f, :timer, "10" %> 10 min
                <%= radio_button :f, :timer, "15" %> 15 min<br/>
                </p>                   
     
                <p>
                <b>Password</b><br />
                <%= f.text_field :password %>
                </p>                      
     
                <p>
                <%= f.submit "Create" %>
                </p>
                <% end %>
     
                <%= link_to 'Back', games_path %>
              </div>
    J'en profite pour faire le lien avec un autre post que j'ai créé avant-hier.
    Ma table Game possède les champs : players, timer, password et host.
    Je n'arrive pas à récupérer les valeurs des radio_button pour players et
    timer (il les passe pourtant bien dans params mais apparemment le controller ne les reçoit pas) et je n'arrive pas à récupérer le username de l'utilisateur pour le mettre dans le champs host (le password lui est facultatif).

    Si j'arrive à résoudre ces deux problèmes, mon projet est terminé. J'espère donc sincèrement que qqun pourra m'aider

    Merci !
    Y a des jours, faut pas me chercher... et y a des jours tous les jours !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Blaede Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def login
        if request.post?
    C'est super crade! Où es-tu allé chercher ça?

  5. #5
    Membre régulier Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Points : 82
    Points
    82
    Y a des jours, faut pas me chercher... et y a des jours tous les jours !

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 121
    Points : 92
    Points
    92
    Par défaut
    J'ai lu un peu rapidement mais tu peux ajouter dans ta fonction login de UsersController la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session[:user_name] = @user.name
    Sinon tu peux écrire à la place au même endroit :
    Puis, selon ce que tu as fait, tu récupère soit session[:user_name] soit session[:user].name

Discussions similaires

  1. [Debutant(e)]Timeout de session et redirection page acceuil
    Par xhercule dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 26/12/2007, 11h23
  2. [DEBUTANT]Javascript et stockage en session
    Par jeannot1974 dans le forum ASP
    Réponses: 3
    Dernier message: 24/11/2006, 11h32
  3. [ Session ][ debutant ]
    Par sebus dans le forum Struts 1
    Réponses: 7
    Dernier message: 22/06/2006, 11h25
  4. [Struts][Debutant] liste de résultat en session
    Par hugo123 dans le forum Struts 1
    Réponses: 5
    Dernier message: 19/08/2005, 10h42
  5. [debutant][jsp]Passage d'entier avec une session sans cookie
    Par o151181 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 04/02/2004, 18h22

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