我使用了rails devise gem进行身份验证。具体来说,我使用了设计超时模块进行会话超时30分钟。
我需要弹出一个在29分钟后提示的弹出窗口&能够将会话延长30分钟,与Unfuddle.com中的会话完全相同。
在此提示符下有2个按钮和一个计时器:“保持登录状态”,“注销”和计时器60秒。如果我在60秒内单击“保持登录状态”按钮,则会话应延长至下一个30分钟而不更改或刷新页面。如果我点击Logout,那么用户应该注销他的会话并重定向到登录页面。如果我在60秒内没有按下上述任何一个按钮,它会自动重定向到登录页面。 指导将不胜感激。
我在设计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
答案 0 :(得分:1)
要为每个用户动态设置超时,您可以在名为timeout_in的用户模型中定义一个返回超时值的方法。
class User < ActiveRecord::Base
devise (...), :timeoutable
def timeout_in
if self.admin?
1.year
else
2.days
end
end
end
你需要定义一个方法,并且必须相应地调用...
我建议您查看timeout module in Devise
的源代码希望这能帮到你!!!