Forum: Rails France Problème de session

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Pylos M. (Guest)
on 2007-03-08 11:22
Bonjour,

J'essaye d'appliquer les sessions dans un projet Rails.

Voici mon premier "conttroler"

Code :

class Personne
  attr_accessor :nom, :prenom, :telephone
end

class AdminController < ApplicationController
  def index
  end

  def action1
    p = Personne.new
    p.nom = params[:nom]
    p.prenom = params[:prenom]
    p.telephone = params[:telephone]

    session["personne"] = p

    chaine = "<a href ='http://localhost:3000/test/index'>#{p.nom}</a>"...
    render :text=>chaine

  end

  def action2
    p = session['personne']

    if p.nil?
      chaine = "La sesion est inconue"
    else
      chaine = "Nom : #{p.nom} <br /> Pr&eacute;nom :
#{session['personne'].prenom} <br/> T&eacute;l&eacute;phone :
#{p.telephone}"
    end
    render :text=>chaine
  end
end


puis j'essaye de récupérer la session dans un autre "controller"


Code :

class TestController < ApplicationController

  def index
    p = session['personne']

    if p.nil?
      chaine = "La sesion est inconue"
    else
      chaine = "Nom : #{p.nom} <br /> Pr&eacute;nom : #{p.prenom} <br/>
T&eacute;l&eacute;phone : #{p.telephone}"
    end
    render :text=>chaine
  end
end

Ici il m'indique que :

We're sorry, but something went wrong.

We've been notified about this issue and we'll take a look at it
shortly.


On ma signalé de rajouter : model personne dans mon "controller" Test,

Mais cela ne fonctionne pas mieux.

Ai-je fais une erreur?
Faut-il ajouter quelque chose à Rails pour les sessions.

Merci de votre aide.

MaitrePylos
Mun (Guest)
on 2007-03-09 00:48
Je ne sais pas pourquoi ça ne marche pas. Mais essai avec le symbole
:personne

Soit session[:personne] ça devrait marcher.

Je crois que si tu défini un symbole, tu peux le retrouver un peu
partout dans ton environement. Les cas dans lesquels les utiliser ne
sont pas encore très clair pour moi donc prends ce que je te dis avec
précaution.

Néanmoins, je n'ai pas de problèmes de ce genre avec les sessions en
utilisant les symboles.


Par contre j'aurais une petite question par rapport à leur utilisation.
Je voulais savoir si, quelqun de balèse et mal intentionné pourait
programmer un browser perso dans lequel il pourait deffinir lui même les
sessions.

Un petit exemple, mettons qu'on ai une clef :logged dans notre session.
Ainsi à "l'entrée" de chaque page on testerais simplement si il faut
l'afficher ou non. Ainsi, le mec balèse mal intentioné pourait-il
envoyer une requète frauduleuse dans laquelle session[:logged]=true ?

Spontanement je dirais que oui. Alors je me demandais quel était le
schema classique et basique du tableau session pour assurer un premier
niveau de sécurité des pages visitées. Est-il conseillé par exemple
d'aller systematiquement voir dans la base de donnée vérifier que
nickname et password correspondent ?

Merci bien
Pylos M. (Guest)
on 2007-03-09 12:35
Mun wrote:
> Je ne sais pas pourquoi ça ne marche pas. Mais essai avec le symbole
> :personne
>
> Soit session[:personne] ça devrait marcher.

si je reste dans le même controller cela ne pose pas de problème.

par contre dès que je sors et vais dans un autre controller j'ai une
erreur qui donne ceci dans les logs

logs:

Processing AdminController#action1 (for 127.0.0.1 at 2007-03-09
11:31:10) [POST]
  Session ID: 64d9a9e2bb57ed66aeb412ee336eddd8
  Parameters: {"nom"=>"ernaelsten", "prenom"=>"gérard",
"action"=>"action1", "controller"=>"admin", "telephone"=>"071300085"}
Completed in 0.00092 (1090 reqs/sec) | Rendering: 0.00005 (5%) | 200 OK
[http://localhost/admin/action1]
Session contains objects whose class definition isn't available.
Remember to require the classes for all objects kept in the session.
(Original exception: uninitialized constant Module::Personne
[NameError])


J'ai tenté de rajouter ceci dans mon controller

Module :Personne ou Module::Personne

Mais cela ne fonctionne pas mieux.

Merci de votre aide

MaitrePylos

>
Nicolas B. (Guest)
on 2007-03-09 23:40
1) Vérifie que tu utilises la dernière version de Rails (1.2.x)
2) Met ta classe personne dans un fichier personne.rb dans le dossiers
des modèles.
3) Ta classe personne devrait avoir une meilleure visibilité.
4) Ça devrait mieux marcher maintenant :).

Pylos Maitrepylos wrote:
> J'ai tenté de rajouter ceci dans mon controller
>
> Module :Personne ou Module::Personne
>
> Mais cela ne fonctionne pas mieux.
>
> Merci de votre aide
>
> MaitrePylos
>
>>
Pylos M. (Guest)
on 2007-03-12 11:51
Nicolas B. wrote:
> 1) Vérifie que tu utilises la dernière version de Rails (1.2.x)
> 2) Met ta classe personne dans un fichier personne.rb dans le dossiers
> des modèles.
> 3) Ta classe personne devrait avoir une meilleure visibilité.
> 4) Ça devrait mieux marcher maintenant :).
>

Nickel.

Un grand merci
This topic is locked and can not be replied to.