2012-03-30 10 views
8

Estoy usando 'idear' para la autenticación de contraseña en mi aplicación Ruby on Rails. Una vez que inicio sesión con éxito y cierro el navegador y abro una nueva ventana del navegador, sigo conectado. Digamos que estoy usando Chrome, cierro todas las instancias de Chrome y luego abro una nueva. Todavía estoy conectado. Lo mismo ocurre cuando estoy haciendo IE y Firefox también.cómo borrar idear sesión en el navegador de cerca?

Supongo que al cerrar la ventana y abrir una nueva ventana debería establecer una nueva sesión entre el servidor y el navegador, ¿no es así? Si no, ¿cómo lo logro?

intenté hacer clic en el botón de cerrar sesión en el evento onbeforeunload de la ventana del navegador, pero no funciona ya que cerrar sesión de la aplicación en cualquier formulario de envío o enlace.

window.onbeforeunload = function() { 
    $('#logout_cls').click(); 
}; 

y trató de enviar AJAX petición al controlador sesiones destruir acción para la limpieza de la sesión.

jQuery(window).bind(
    "close", 
    function(event) { 
      $.ajax({ 
      type: 'DELETE', 
      dataType: 'json', 
      url: $('#logout_cls').attr('href') 
      }); 
    }); 

pero todo esto no funcionó.

Respuesta

2

Eso es realmente una característica. Facebook y casi todos los sitios con autenticación lo hacen mediante el uso de cookies.

Opción de Rememberable "gestiona la generación y borrado de un token para recordar al usuario desde una cookie guardada". Si no lo desea, elimine la cadena remember_token y la fecha y hora remember_created_at de su modelo de usuario y elimine el botón Remember Me de su página de inicio de sesión.

+0

Ya tengo la estrategia de remembranza desactivada. Así es como mi modelo es: idear: database_authenticatable,: recuperable,: trackable,: validatable ¿Pensamientos? – user380692

+0

Ir a 'db \ schema.rb'. Verifique las tablas de sus usuarios. ¿Tiene un atributo llamado 'remember_created_at' o' remember_token'? Si tiene, entonces debes eliminarlos. – Ashitaka

+0

¿Pudo resolver esto? – Ashitaka

6

Resulta que el problema era cómo se configuró mi session_store.

MyApp::Application.config.session_store :active_record_store, 
{:key => '_my_app_session', :secret => '5xb5x1g92e965b95b16e49x79gxx9999', :expire_after => 2.hours} 

Eliminé las opciones y se solucionó el problema.

Tengo otra pregunta y es la eliminación de opciones ¿tiene algún riesgo potencial? No estoy almacenando datos importantes en la sesión, obviamente, pero poniendo datos que no quisiera exponer.

Mi aplicación podría estar en funcionamiento en unos días, sería muy útil obtener una respuesta para esto. Busqué en Google cosas por una hora o algo así, pero no tuve demasiada suerte.

Gracias

+4

Si tiene otra pregunta, probablemente debería publicarla como una pregunta separada (tal vez con un enlace a esta). –

Cuestiones relacionadas