我正在使用rails 4,我的一个应用程序我正在使用设计进行身份验证过程。一切正常,我想做一件事。用户登录后,该会话将持续1天或直到用户按下注销按钮。例如,如果我在2015年3月8日上午10点登录,它将在2015年3月9日上午10点自动销毁会话,即使我正在那个时间工作。
devise :timeoutable, :timeout_in => 24.hours
我使用了设计超时(上面的代码)但它需要24小时不活动。
config.timeout_in = 24.hours
在devise.rb中,我尝试配置它,但它再次失败,它使用户不活动。如果有人知道更好的想法或代码请与我分享。所需的任何信息只需添加评论我将编辑我的问题。提前谢谢。
答案 0 :(得分:2)
timeout_in
配置文件中的 devise.rb
说明:
您希望在没有活动的情况下超时用户会话的时间。在这之后 时间将再次要求用户提供凭证。
因此,这不是登录后的时间,而是自上次用户活动以来的时间。那不是你想要的。
要创建真正持续x小时的会话,您可以在before_action
中创建一个ApplicationController
过滤器,用于将用户的current_sign_in_at
时间与当前时间进行比较。像(未经测试)的东西:
# in controllers/application_controller.rb
before_action :check_max_session_time
def check_max_session_time
redirect_to destroy_user_session_path if current_user.current_sign_in_at + 24.hours < Time.now
end
timeout_in
配置仍应为24.hours
,否则用户将提前注销。