2013-05-22 12 views
5

Podczas korzystania z modułu timeoutable dla Devise, jak ustalić, ile czasu upłynie, zanim wygasa sesja bieżącego użytkownika? Celem jest uwzględnienie tej wartości we wszystkich odpowiedziach, aby skrypt po stronie klienta mógł z niej skorzystać. Domyślam się, że Devise wewnętrznie używa Wardena do uwierzytelniania, ale nie znalazłem niczego, co wyjaśniałoby, jak wyciągnąć czas wygaśnięcia sesji z głębi Strażnika.Rails/Devise - Określanie, kiedy sesja użytkownika wygaśnie

Odpowiedz

10

Oto jak to zrobić:

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

Wiedziałem o tym, ale to wzięło swój post, aby uświadomiłem sobie, że to była właściwie odpowiedź. Dzięki! – cbmanica

+0

Co zrobić, jeśli chcę, aby 1 użytkownik miał inny limit czasu, a inny użytkownik inny? – user1735921

7

Wygląda jak można umieścić go w modelu jak mówi Benjamin Tan, czy można umieścić w config/inicjalizatory/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 

Zobacz to pytanie StackOverflow: Setting session length with Devise.

0

dla szyn 4:

config/inicjalizatory/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