如何在一段时间后自动从Rails应用程序注销用户?

时间:2013-08-17 12:20:22

标签: ruby-on-rails ruby ruby-on-rails-3 security session-cookies

在我的Rails应用中,我有sessions_helper这样的话:

def sign_in(user)
  token = User.generate_token
  if params[:remember_me]
    cookies.permanent[:remember_token] = token
  else
    cookies[:remember_token] = token
  end
  self.current_user = user
end

def sign_out
  cookies.delete(:remember_token)   
  self.current_user = nil
end

现在,出于安全原因,如果用户已经处于非活动状态(例如30分钟),则自动注销用户会很不错。

在Rails中实现这一目标的最佳方法是什么?

我在考虑在prepend_before_filter中使用ApplicationController,只要用户在应用程序中执行某些内容,就会将用户Cookie的生命周期再延长30分钟。

但是从安全角度推荐这种方法吗?

感谢您的任何意见。

1 个答案:

答案 0 :(得分:0)

我使用类似的方法,但我使用的是会话而不是cookie。我在我的应用程序控制器中有一个'authenticate'动作,由每个控制器的before_filter触发,这个动作戳了'session [:accesses]'来添加1,这反过来更新了数据库中的'updated_at'列。然后我有一个cron作业,从数据库中删除任何在20分钟内没有更新的会话。