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>>
