2013-05-22 3 views
5

При использовании модуля timeoutable для разработки, как определить, как долго он пройдет до истечения срока действия текущего пользователя? Цель состоит в том, чтобы включить это значение во все ответы, поэтому клиентский скрипт может использовать его. Я понимаю, что Devise внутренне использует Warden для аутентификации, но я не нашел ничего, что объясняет, как вывести время истечения сеанса из глубины Warden.Rails/Devise - определение времени окончания сеанса пользователя

ответ

10

Вот как это сделать:

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

Я знал, что, но он принял свой пост, чтобы сделать я понимаю, что это был ответ. Благодаря! – cbmanica

+0

Что делать, если я хочу, чтобы у 1 пользователя был разный тайм-аут, а другой - на другой? – user1735921

7

Похоже, вы можете поместить его в модель, как говорит Бенджамин Тан, или вы можете поместить в конфигурации/Инициализаторы/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 

См. Этот вопрос StackOverflow: Setting session length with Devise.

0

Для Rails 4:

конфигурации/Инициализаторы/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