【发布时间】:2016-12-04 01:41:53
【问题描述】:
我使用 rails devise gem 进行身份验证。具体来说,我使用了设计可超时模块来实现 30 分钟的会话超时。
我需要在 29 分钟后弹出一个提示,并且能够将会话延长 30 分钟,这与在 Unfuddle.com 中实现的完全相同。
在此提示上有 2 个按钮和一个计时器:“保持登录”、“注销”和 60 秒计时器。如果我在 60 秒内单击“保持登录”按钮,则会话应延长至下一个 30 分钟,无需更改或刷新页面。如果我点击注销,那么用户应该注销他的会话并重定向到登录页面。如果我在 60 秒内没有按上述 2 个按钮中的任何一个,那么它会自动重定向到登录页面。 指导将不胜感激。
我在设计 session_controller 中使用了以下代码:
def skip_timeout
request.env["devise.skip_trackable"] = true
end
def extend_admin_session
request.env["devise.skip_trackable"] = false
@time_left_insec = Devise.timeout_in - (Time.now - admin_session["last_request_at"]).round
render :json => @time_left_insec
end
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 devise