2010-09-26 9 views
5

Estoy ejecutando Rails 3 configurado para usar memcached para el almacén de sesiones. Tengo la siguiente configuración:Tecla de sesión en bastidor demasiado larga para memcached

development.rb

config.cache_store = :mem_cache_store

session_store.rb

Foo::Application.config.session_store :mem_cache_store, :key => '_foo_session'

que pueda empezar la multa aplicación, cuando voy a cualquier La página me aparece el siguiente error:

ArgumentError (key too long "rack:session:__really_long_session_key__"):

Me doy cuenta de que el límite de la clave memcached es 255. ¿Cómo puedo evitar esto, o estoy haciendo algo mal?

Respuesta

9

Es casi seguro que vea esto porque está cambiando de la tienda de cookies a memcached. Su navegador todavía tiene la cookie de sesión anterior, con la ID larga. Debe eliminar esta cookie de su navegador y el problema desaparecerá.

Si está cambiando de la tienda de cookies a la memoria de un sitio de producción, esto será un problema porque no tiene control sobre los navegadores de su usuario. Probablemente necesite cambiar la clave de sesión para evitar problemas en este caso.

0

Si su "clave" tiene más de 255 caracteres, parece que está haciendo algo mal. ¿Por qué tu clave de sesión es tan larga? ¿Qué pasa con MD5 o SHA1?

+0

Parece que no puedo deducir de dónde viene esta clave de sesión. No tengo esa clave de sesión que se muestra en el error especificado en ninguna parte de mi aplicación. ¿No se supone que la tecla ': key => '_foo_session'' es la clave? –

+0

@Jay Bala - No estoy exactamente seguro de dónde está configurado ... Nunca he usado Rack –

1

¿Es posible cambiar desde la tienda de cookies o ejecutar otras aplicaciones de tienda de sesión de cookies en el mismo dominio (por ejemplo, localhost)?

En este caso, la tienda de sesiones de cookies es responsable de la gran cadena session_id (porque en realidad almacena toda la sesión en ella). Solo borre su cookie de sesión y estará bien.

Cuestiones relacionadas