2016-02-25 12 views
5

Sto lavorando a un'applicazione Rails 4.2 e utilizzo della gemma devise per l'autenticazione.Devise: Come utilizzare il cookie remember_me dopo che l'utente si è disconnesso?

Per la funzione remember_me, devise genera un cookie remember_user_token che viene eliminato dopo sign_out.

C'è un modo tale che Devise non dovrebbe distruggere remember_user_token?

ho cercato di false il sotto config nel initializer

config.expire_all_remember_me_on_sign_out = false

Ma non ha aiutato.

Ho bisogno di quel cookie dopo la disconnessione in modo che compaia il modulo di accesso.

Per favore aiuto.

Grazie

risposta

-1

Ecco il basso sul negozio di biscotto. Prima di tutto, tutto in un cookie è presente in modo permanente una volta impostato o finché l'utente non cancella manualmente il cookie in qualche modo. Ciò significa che se imposti user_id e user_group_id, è presente nel cookie fino a quando non viene aggiornato o eliminato. Questo è diverso da una sessione poiché la sessione è come ram su un computer, una volta che il browser è chiuso, la sessione si chiude insieme a tutti i suoi dati.

  1. Quindi, questo significa che quando si effettua il logout l'utente, è necessario specificare che il loro biscotto svuota tutto quello che non wan't di avere. Quando il tuo utente effettua il login, tu imposti tutto ciò che vuoi che l'utente abbia mentre sono loggati. Quindi, dato che la sessione e i cookie sono completamente separati, non interagiscono mai insieme a meno che tu non decida di farli. Quindi la tua sessione non si scaricherà mai nel negozio di cookie a meno che tu non lo faccia.

  2. Ogni volta che gli utenti visitano il tuo sito, potresti avere un singolo handshake che garantisce che il cookie corrisponda al db se necessario. In caso contrario, si potrebbero avere dati diversi che vengono aggiornati solo all'accesso o meno e senza l'handshake, l'utente dovrebbe continuare ad accedere per assicurarsi che siano ancora validi e che vanifichino lo scopo di avere un cookie in primo luogo.

  3. Lo svantaggio della memorizzazione dei cookie lato client è un problema di sicurezza. A seconda di come si utilizza il cookie per memorizzare i dati, una persona potrebbe dirottare alcuni cookie sul proprio sito e far finta di essere loro. Questo può essere evitato con un'attenta progettazione, ma presumiamo che tutto ciò che è nel tuo negozio di biscotti sia un gioco leale per tutti, quindi usalo con attenzione e solo per dati non segreti.

Spero che questo aiuti!

1

L'accoppiamento dell'autenticazione con il pre-riempimento del modulo non è necessariamente una buona idea. È possibile memorizzare l'accesso in un cookie all'accesso eseguito con successo. Puoi sostituire il metodo create nel tuo SessionsController, chiamare lo super per chiamare Devise::SessionsController#create e passare un blocco. Il blocco verrà eseguito dopo un accesso riuscito e riceverà l'utente come parametro.

class SessionsController < Devise::SessionsController 
    def create 
    super do |user| 
     cookies[:login] = user.login 
    end 
    end 
end