Le mercredi 06 octobre 2010 à 20:36 +0200, Fabien Jakimowicz a écrit :

> 2010/10/6 Cyril Mougel <[email protected]>:
> > Le 06/10/10 10:38, Cédric Bousmanne a écrit :
> >
> > Bonjour à tous,
> >
> > Je rencontre un bug assez ennuyant et je ne trouve absolument aucun cas
> > similaire en effectuant mes recherches. Vous êtes donc mon dernier espoir
> > :-)
> >
> > Depuis que j'ai fais une mise à jour sur le serveur de développement, il est
> > devenu impossible de s'identifier sur l'application sur laquelle je
> > travaille actuellement.
> >
> > Si je reviens à la méthode par défaut de stockage des sessions, plus aucun
> > problème, je peux m'identifier, par contre, en utilisant :mem_cache_store,
> > current_user revoit toujours nil.
> >
> > lib/authenticated_system.rb
> >
> >     def current_user
> >       @current_user ||= (login_from_session || login_from_basic_auth ||
> > login_from_cookie) unless @current_user == false
> >     end
> >
> >     def current_user=(new_user)
> >       session[:user_id] = new_user ? new_user.id : nil
> >       @current_user = new_user || false
> >     end
> >
> > environment.rb :
> >
> >   require "memcache"
> >
> >   CACHE = Memcache.new(:server => "localhost:11211")
> >
> >   config.action_controller.session_store = :mem_cache_store
> >
> >   config.action_controller.session = {
> >     :session_key => '_cesi_session',
> >     :secret      =>
> > 'WEpracruDrAsAc4ZuQUXuqU8WAq5DapHAbrEjAK7teparecRagaFrUgeCHekeVe7',
> >     :cache       => CACHE,
> >     :expires=> 86400
> >   }
> >
> > Note : je travaille avec Rails 2.3.8
> >
> > As-tu fait une requête sur ton serveur memcache pour savoir si la session a
> > été enregistré ou non ?
> >
> 
> lance ton serveur memcached avec le flag -vv (ou dans le fichier de
> conf), tu auras toutes les commandes envoyées a ton serveur.
> 

J'ai lancé mon serveur memcached comme tu le proposes, et je vois bien
que ma session est correctement sauvée.

Le problème vient manifestement du fichier lib/authenticated_system.rb
généré par RESTful authentication la fonction suivante n'enregistre rien
en session, malgré que new_user ne soit pas nul :

    # Store the given user id in the session.
    def current_user=(new_user)
      session[:user_id] = new_user ? new_user.id : nil
      @current_user = new_user || false
    end

un test sur la valeur de session[:user_id] dans cette fonction retourne
bien la valeur attendue, le meme test dans le fichier
application_controlleur me renvoie nil.

J'ai effectué quelques autre tests, si je défini des variables dans ma
session dans application_controller, je les récupères sans problème, par
contre, dès que les variables de sessions sont définie dans le fichier
lib/authenticated_system.rb, elles semblent se perdre en cours de
route. 

A titre d'information, voici mon fichier config/environment.rb : 

RAILS_GEM_VERSION = '2.3.8' unless defined? RAILS_GEM_VERSION

require File.join(File.dirname(__FILE__), 'boot')

Rails::Initializer.run do |config|
  config.gem 'wysihat-engine', :source => 'http://gemcutter.org'
  config.active_record.observers = :user_observer
  config.time_zone = 'UTC'
  config.i18n.default_locale = :fr

  require "memcache"
  CACHE = Memcache.new(:server => "localhost:11211")
  config.action_controller.session_store = :mem_cache_store
  config.action_controller.session = {
    :key => '_cesi_session',
    :secret      =>
'WEpracruDrAsAc4ZuQUXuqU8WAq5DapHAbrEjAK7teparecRagaFrUgeCHekeVe7',
    :cache       => CACHE,
    :expires=> 86400
  }
end

require "will_paginate"
require 'acts_as_ferret'

Merci d'avance, 

Studio7 - Création Web
http://www.studio-sept.be/
Tél: +32 (0)63/581005
GSM: +32 (0)498/685687
TVA : BE0823126558


-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]

<<attachment: linkedin.png>>

<<attachment: twitter.png>>

<<attachment: facebook.png>>

Répondre à