За 2 минуты до истечения времени ожидания сеанса предупредите пользователя и добавьте его с помощью Devise |Рельсы 5 - PullRequest
0 голосов
/ 04 января 2019

Для автоматического выхода пользователя из режима idle/inactive до 20 минут. Я использовал модуль Devise :timeoutable, а также установил config.timeout_in = 20.minutes в файле конфигурации devise. Который прекрасно работает.

Теперь, когда пользователь был неактивен в приложении в течение 18 минут, хотел бы уведомить его

"Вы выйдете из системы через 2 минуты из-за отсутствия активности. Если вы чтобы продолжить сеанс, нажмите Ok "

Для этого я добавил setInterval() функцию внутри application.js , которая будет вызывать Ajax каждую минуту для проверки сеанса пользователя (я установил время истечения вручную в сеансе, как показано ниже).

application_controller.rb:

class ApplicationController < ActionController::Base
  before_action :renew_user_session

  def renew_user_session
    session[:expires_at] = (Time.now + 20.minutes).to_s
  end
end

users_controller.rb:

class UsersController < ApplicationController
  skip_before_action :renew_user_session, only: :validate_user_session

  # this method is called in setInterval() through ajax
  def validate_user_session
    status = true
    if user_signed_in?
      status = (Time.parse(session[:expires_at]) - 2.minutes) > Time.now
    end
    respond_to do |format|
      format.json { render json: status }
    end
  end
end

но всякий раз, когда я звоню Ajax, он активирует пользователя. Есть ли способ проверить время бездействия пользователя? и уведомить до 2 минут? или какое-либо альтернативное решение для достижения этой цели?

...