Ruby on rails 如何检查会话是否超时并将用户重定向回rails中的登录屏幕

Ruby on rails 如何检查会话是否超时并将用户重定向回rails中的登录屏幕,ruby-on-rails,session,authentication,Ruby On Rails,Session,Authentication,我已经在Rails 3.2.17中配置了身份验证,但没有Desive。我想在会话结束30分钟后将用户重定向回登录屏幕,让他们知道会话已经结束,他们必须再次登录 我试图在用户上添加一个属性:login\u expiry,并在找到用户后在会话控制器中设置会话结束时间10分钟后的时间: user.login\u到期日=40.minutes.from\u now user.save 其中,login_expiry是一个datetime属性 如果用户会话已结束,并且在会话结束后10分钟内,则应向用户显示登

我已经在Rails 3.2.17中配置了身份验证,但没有Desive。我想在会话结束30分钟后将用户重定向回登录屏幕,让他们知道会话已经结束,他们必须再次登录

我试图在用户上添加一个属性:login\u expiry,并在找到用户后在会话控制器中设置会话结束时间10分钟后的时间:

user.login\u到期日=40.minutes.from\u now user.save

其中,login_expiry是一个datetime属性

如果用户会话已结束,并且在会话结束后10分钟内,则应向用户显示登录屏幕并闪烁“您的会话已结束。请重新登录”

但是,我发现,用户对象上的登录过期未更新。数据库正在回滚

我真的希望任何人都能帮上忙


提前谢谢

用户成功登录后,您可以执行以下操作:

session[:user_id] = user.id
session[:expires_at] = Time.current + 30.minutes
if session[:expires_at] < Time.current
  # sign out and redirect to login page
end
然后,每次经过身份验证的用户执行某些操作时,请执行以下操作:

session[:user_id] = user.id
session[:expires_at] = Time.current + 30.minutes
if session[:expires_at] < Time.current
  # sign out and redirect to login page
end

由于
ApplicationController
通常是每个控制器的父级,因此在每个控制器调用之前,它将
检查\u login\u session

您是否需要Desive无法立即处理的东西?您好,我决定不设计,因为我了解身份验证的工作原理,拔出我的代码并放入设计将比它的价值更麻烦。对不起,我第一次误读了这一点,我把它理解为“with designe”我的坏!您好sadaf2605,谢谢您的回答,只是想知道我将把执行会话超时检查的代码放在哪里?