问题描述
问题:如果我在两台设备(例如 A 和 B)上以同一用户身份登录,并且我在一台设备 (A) 上使用我的应用程序,而另一台设备 (B) 保持不活动状态。设备 B 在使用功能logout_on_timeout时会话到期时不会注销。
我正在尝试实现 authlogic gem 的 logout_on_timeout 功能,我成功实现了该功能,但问题是无论浏览器如何,authlogic 都会在每个请求中更新用户的 last_request_at 属性或登录的设备。因此,如果我从移动设备和台式机登录同一用户,并且其中一个设备处于活动状态,那么另一台设备也会保持活动状态,因为它使用相同的共享 last_request_at来自用户的属性。
来自 authlogic gem 的参考代码:lib/authlogic/acts_as_authentic/logged_in_status.rb
# Returns true if the last_request_at > logged_in_timeout.
def logged_in?
unless respond_to?(:last_request_at)
raise(
"Can not determine the records login state because " \
"there is no last_request_at column"
)
end
!last_request_at.nil? && last_request_at > logged_in_timeout.seconds.ago
end
那么我该如何解决这个问题呢?有没有办法在会话级别实现它?就像在 UserSession 模型中使用 last_request_at 一样。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)