我正在使用 Devise 来管理我的 Rails 应用程序的登录。我想设置最大会话长度:用户将在 10 小时后被迫再次登录。
nb 这是不可超时。 Timeoutable 为非活动会话设置会话到期时间。例如,如果用户在 30 分钟内没有单击链接,则会将其注销。
即使是活动会话,我也想使其过期,并且超时时间比我的超时期限更长。
您将需要自定义逻辑来完成此行为,AFAIK Devise 不提供此功能。
例如,您可以尝试使用如下内容:https://github.com/markets/sudo_rails。有了这个 gem,您可以通过在控制器中使用
sudo
宏来要求用户再次输入密码以进行一些合理的操作:
class SettingsController < ApplicationController
sudo only: :sensible_settings
end
它带有 Devise 集成,您还可以定义自定义持续时间:
# config/initializers/sudo_rails.rb
SudoRails.setup do |config|
config.sudo_session_duration = 10.minutes
end