2013-05-22 11 views
5

Quando si utilizza il modulo timeoutable per Devise, come si può determinare quanto tempo dovrà trascorrere prima che la sessione dell'utente corrente scada? L'obiettivo è di includere questo valore in tutte le risposte in modo che lo script lato client possa farne uso. Raccolgo che Devise utilizza internamente Warden per l'autenticazione, ma non ho trovato nulla che spieghi come estrarre la durata della sessione dalle profondità di Warden.Rails/Devise - Determinazione del momento in cui scadrà la sessione utente

risposta

10

Ecco come si fa:

class User < ActiveRecord::Base 
    devise :authenticatable, :timeoutable, :validatable, :timeout_in => 20.minutes 
end 
+1

Sapevo che, ma ci sono voluti il ​​tuo post per fare mi rendo conto che era in realtà la risposta. Grazie! – cbmanica

+0

Cosa succede se voglio che 1 utente abbia un timeout diverso e un altro utente diverso? – user1735921

7

assomiglia si può mettere nel modello come dice Benjamin Tan, o si può mettere in config/inizializzatori/devise.rb

# ==> Configuration for :timeoutable 
# The time you want to timeout the user session without activity. After this 
# time the user will be asked for credentials again. Default is 30 minutes. 
# config.timeout_in = 30.minutes 

Vedere questa domanda StackOverflow: Setting session length with Devise.

0

Per Rails 4:

config/inizializzatori/devise.rb

if Rails.env.production? 
    config.timeout_in = 30.minutes 
    else 
    config.timeout_in = 7.days 
    end 

user.rb

class User < ActiveRecord::Base 
    devise :timeoutable 
end