2012-03-30 13 views
8

Sto usando 'escogetto' per l'autenticazione della password nella mia app ruby ​​on rails. Una volta effettuato il login e chiuso il browser e apro una nuova finestra del browser, sono ancora connesso. Diciamo che sto usando Chrome, chiudo tutte le istanze di Chrome e ne apro una nuova. Sono ancora loggato. Lo stesso vale per IE e Firefox.come cancellare la sessione di sviluppo sulla chiusura del browser?

Suppongo che alla chiusura della finestra e l'apertura di una nuova finestra dovrebbe stabilire una nuova sessione tra il server e il browser non è vero? In caso contrario, come posso ottenerlo?

ho provato a fare clic sul pulsante di disconnessione sull'evento onbeforeunload della finestra del browser, ma non funziona in quanto disconnessione dell'applicazione su qualsiasi modulo di invio o di collegamento.

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

e ha cercato di inviare AJAX richiesta al controller di sessioni di distruggere azione per eliminare la sessione.

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

ma tutto questo non ha funzionato.

risposta

2

Questa è in realtà una funzione. Facebook e praticamente tutti i siti con autenticazione lo fanno attraverso l'uso dei cookie.

L'opzione di Devise Ricordabile "gestisce la generazione e la cancellazione di un token per ricordare l'utente da un cookie salvato". Se non si desidera, rimuovere la stringa remember_token e remember_created_at datetime dal modello utente e rimuovere il pulsante Remember Me dalla pagina di accesso.

+0

Ho già disabilitato la strategia memorabile. Ecco come il mio modello è: ideato: database_authenticatable,: recuperabile,: tracciabile,: validatable Pensieri? – user380692

+0

Vai a 'db \ schema.rb'. Controlla le tabelle degli utenti. Ha un attributo chiamato 'remember_created_at' o' remember_token'? Se è così, allora devi rimuoverli. – Ashitaka

+0

Sei riuscito a risolvere questo? – Ashitaka

6

Si scopre che il problema era come il mio session_store era configurato.

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

Ho rimosso le opzioni e il problema è stato risolto.

Ho un'altra domanda e che è la rimozione di opzioni ha potenziali rischi? Non sto memorizzando dati importanti nella sessione, ovviamente, ma inserendo dati che non vorrei rivelare.

La mia app sarebbe disponibile in pochi giorni sarebbe molto utile per ottenere una risposta per questo. Ho cercato su Google le cose per circa un'ora, ma non ho avuto troppa fortuna.

Grazie

+4

Se hai un'altra domanda, dovresti probabilmente postarla come una domanda separata (magari con un link a questa). –

Problemi correlati