如何在Ruby on Rails中向用户显示即将发生会话超时的警告消息?

时间:2019-04-01 07:58:40

标签: ruby-on-rails warnings session-timeout

我想向用户显示超时警告(某种倒计时,例如会话超时前2分钟)

我不确定如何显示警告before超时

我目前在ApplicationController类中使用以下代码来检查每次按下控制器时用户是否已登录/有效:

def check_login
  logger.info "ApplicationController check_login"

  if session[:current_user]
    <do something>
  else
    redirect_to login_path, flash: {notice: 'We require you to sign in.'}
  end
end

但是我不知道如何在before 2分钟的会话超时中显示警告。请帮忙!

2 个答案:

答案 0 :(得分:1)

  

您可以在application_controller.rb中使用before_action过滤器,例如

Class ApplicationController
  before_action :check_session_has_expired

  def check_session_has_expired
     if !session[:user].present?
        redirect_to :session_warning_url
     end
  end
end

答案 1 :(得分:1)

好的,您还可以在会话中设置expire_at

session[:expire_at] = Time.current + 24.hours

然后,每两分钟向服务器发出ajax请求

并检查下面的条件

if Time.current - session[:expires_at] < 2.minutes
  # show warning
end