2015-12-28 3 views
-1

Я создаю приложение rails, где мне приходится автоматически выходить из системы с несколькими пользователями, если текущее время пересекает 6PM и других пользователей, если текущее время пересекает 7PM. Я использую для проверки подлинность. Я не нашел никакого решения с помощью разработки. У разработчика есть только один параметр timeout_in для бездействия.Вызвать метод sign_out в качестве фоновой задачи с помощью devize

Я также пробовал с delayed_job. Но во время выполнения асинхронной задачи сеансовый хэш не распознается.

Есть ли какое-то очевидное решение, которое мне не хватает?

+1

Разрабатывает использует подписанное печенье. Вы можете просто добавить срок действия для файлов cookie. Вы пробовали это? – Kkulikovskis

ответ

1

Вы можете установить период истечения срока действия динамически в разделе «Разработка» с версии 1.5.2. https://github.com/plataformatec/devise/wiki/How-To%3a-Add-timeout_in-value-dynamically

Может быть, вы могли бы попробовать что-то вроде этого:

class User < ActiveRecord::Base 
    devise (...), :timeoutable 

    def timeout_in 
    if should_logout_at_19 
     timeout_period_for 19 
    elsif should_logout_at_18 
     timeout_period_for 18 
    else 
    ... 
    end 
    end 

    # period in seconds until next session expiration hour. 
    def timeout_period_for(given_hour) 
    next_time = if Time.now.hour > given_hour 
     Date.tomorrow.to_time.change(hour: given_hour) 
    else 
     Date.today.to_time.change(hour: given_hour) 
    end 
    next_time - Time.now 
    end 

    def should_logout_at_19 
    # user criteria to logout at 7 PM 
    end 

end 
Смежные вопросы