0

我想构建一个 rake 任务或工具来销毁从 CLI 调用的所有活动会话,当我需要时以及每晚大约晚上 9:00 左右。

我发现 Devise 有能力指定超时。我将设计用于用户会话。尽管他们的系统保持非活动状态超过一个小时,但我的用户中约有三分之一的会话从未超时。

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

4

2 回答 2

1

您可以将您的存储secret_key在 ENV 变量中。事实上,您应该尽量让您的 secret_token 远离源代码控制。所以你应该有一个可以在运行时更改的 ENV 变量。像这样:

YourApp::Application.config.secret_token = ENV['SECRET_TOKEN']

要创建安全令牌,您应该使用 SecureRandom.hex(64)。

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

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
于 2013-11-27T20:19:19.907 回答
0

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

于 2013-11-27T15:32:45.570 回答