gpt4 book ai didi

javascript - 导轨 5 : sign_out(:user) on load balanced application

转载 作者:行者123 更新时间:2023-12-03 07:08:03 24 4
gpt4 key购买 nike

我注意到一个奇怪的行为。我试图在 SessionsController 中的自定义操作中注销用户,然后在 JS 中将用户重定向到登录页面。我的应用程序部署在负载均衡器后面的 AWS 上。

下面是相关的 session Controller 和javascript代码。

  def inactivity
user_signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(:user))
flash.now[:alert] = 'Logged out due to inactivity.'
flash.keep(:alert)
if user_signed_out
head :ok
else
raise "User could not be logged out."
end
end
Session.inactivity().then(function() {
Turbolinks.visit('/users/sign_in');
})

我看到在某些情况下,用户没有重定向到签名页面,而是登录并重定向到主页,尽管在 inactive 方法中我 sign_out(user)。

我检查了日志,发现在这种情况下,sign_out 由一台服务器处理,重定向到 sign_in 的请求由另一台服务器处理。

会不会是一台服务器不知道用户已注销,因此用户被重定向到主页?

这个问题的可能解决方案是什么?

谢谢。

最佳答案

如果您使用了错误的 session 存储,服务器将不知道来自其他后端服务器的 session 。对我来说,您似乎应该使用 ActiveRecordStore。然后 session 数据存储在数据库中。为了更多信息请参阅 https://guides.rubyonrails.org/action_controller_overview.html#sessionDoes Ruby on Rails ActiveRecordStore work with load balancing across servers?

关于javascript - 导轨 5 : sign_out(:user) on load balanced application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64043323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com