提问人:guy 提问时间:11/15/2023 最后编辑:dbuggerguy 更新时间:11/16/2023 访问量:41
与 Devise 的旧会话超时
Timeout old sessions with Devise
问:
我正在使用 Devise 来管理我的 Rails 应用程序的登录。我想设置最大会话长度:用户将在 10 小时后被强制再次登录。
注意,这不是超时的。Timeoutable 为非活动会话设置会话过期时间。例如,如果用户在 30 分钟内没有点击链接,它将注销他们。
我甚至希望使活动会话过期,其超时时间比我的 Timeoutable 期限更长。
答:
1赞
markets
11/16/2023
#1
您将需要自定义逻辑来完成此行为,因为 Devise 不提供此功能。
例如,您可以尝试使用如下内容:https://github.com/markets/sudo_rails。使用此 Gem,您可以要求用户使用控制器中的宏再次输入密码,以执行某些明智的操作(或整个应用):sudo
class ProtectedController < ApplicationController
sudo
end
实际上,您并没有销毁会话,而是要求用户再次验证密码(针对 下的所有操作)。ProtectedController
它带有 Devise 集成,您还可以定义自定义会话持续时间:
# config/initializers/sudo_rails.rb
SudoRails.setup do |config|
config.sudo_session_duration = 10.hours
end
评论
1赞
guy
11/17/2023
谢谢。我真的想终止会话,而不是把关一个或多个操作。你已经确认它需要自定义方法和自定义代码。不是我所希望的答案,但是的,我所期望的答案。
上一个:物品监控 - 防盗保护 |树莓派
评论