Ruby on rails 3 如何强制在特定时间关闭会话?

Ruby on rails 3 如何强制在特定时间关闭会话?,ruby-on-rails-3,session,devise,ubuntu-12.04,ruby-1.8.7,Ruby On Rails 3,Session,Devise,Ubuntu 12.04,Ruby 1.8.7,我想构建一个rake任务或工具,以便在我需要时销毁从CLI调用的所有活动会话,并在每晚9:00左右打开 我发现Desive具有指定超时的功能。我使用Desive进行用户会话。我的用户中大约有三分之一的会话从未超时,尽管他们的系统保持不活动状态超过一个小时 我不知道我需要什么样的工作。反馈将是一个加号。也可能是一些文档链接。此外,我不知道如何以会话为目标来销毁它们。Rails指南等都不清楚它是否会破坏一个用户的会话或所有服务器客户端会话。我需要取消激活所有客户端-服务器会话。文档很好,但我喜欢一些

我想构建一个rake任务或工具,以便在我需要时销毁从CLI调用的所有活动会话,并在每晚9:00左右打开

我发现Desive具有指定超时的功能。我使用Desive进行用户会话。我的用户中大约有三分之一的会话从未超时,尽管他们的系统保持不活动状态超过一个小时


我不知道我需要什么样的工作。反馈将是一个加号。也可能是一些文档链接。此外,我不知道如何以会话为目标来销毁它们。Rails指南等都不清楚它是否会破坏一个用户的会话或所有服务器客户端会话。我需要取消激活所有客户端-服务器会话。文档很好,但我喜欢一些很好的解释。

如果使用memcache存储会话,您可以创建cron任务来重新启动它。

您可以将
密钥存储在ENV变量中。事实上,您应该设法使您的秘密令牌远离源代码控制。因此,您应该有一个可以在运行时更改的ENV变量。像这样:

YourApp::Application.config.secret_token = ENV['SECRET_TOKEN']
要创建安全令牌,应使用SecureRandom.hex(64)

但无论如何,如果您只想跟踪用户访问站点的时间,您可以创建一个在某些操作之前运行的
before\u过滤器。一个简单的例子是:

class ApplicationController < ActionController::Base
  before_filter :save_time_of_last_visit

  def save_time_of_last_visit
    current_user.touch(:last_sign_in_at) if user_signed_in?
  end
end
class ApplicationController
不确定为什么要在特定时间重置会话。。。强迫用户记住他们的用户名和密码从来都不是一件好事。无论如何,另一个问题应该可以帮助你:对于“考勤卡”系统。这不是强迫他们记住他们的凭证,更多的是跟踪他们什么时候登录和注销——但如果他们从未注销,这一点就失去了。我喜欢更改会话的想法,但似乎您实际上必须手动更改config/initializers/session_store脚本。我的第一个想法是制作一个脚本,用随机生成的键值自动更改它——但是版本控制几乎消失了。据你所知,有没有办法解决这个问题?但是如果你强制注销,你仍然不知道用户的实际注销时间。在我看来,你真正想要的只是跟踪登录时间。这基本上是正确的。如果他们的会话仍处于活动状态,则无法生成新的时间卡。所有课程必须在一天结束时关闭,以便在第二天打开时间表。该卡跟踪登录时间、第一个帐户完成时间、午餐外出和午餐进入、最后一个帐户完成时间、完成的帐户总数和注销。如果用户没有注销,我们将退出上次帐户完成时间。注销不如登录重要,但我们正努力鼓励人们记住注销。由于分配了一个更重要的项目,我还没有机会测试注销,但我相信这应该是我需要的。将此标记为我的答案,再次感谢!