【发布时间】:2017-05-02 08:20:22
【问题描述】:
我已将redis-rb 添加到我的rails 5 应用程序中,以便处理由sidekiq 管理的后端进程。
我的应用中的用户身份验证由 Devise 管理。
在让我的所有工作人员等正常工作后,我的会话存储现在似乎已损坏。问题是当我退出时,用户会话不再被破坏,因此无法退出。
这是我的 session_store.rb 配置:
if Rails.env.production?
Rails.application.config.session_store :cookie_store, key: '_myapp_session', domain: ENV['SESSION_STORE_DOMAIN'], tld_length: ENV['TLD_LENGTH'].to_i
else
Rails.application.config.session_store :cookie_store, key: '_myapp_session', domain: :all, tld_length: 2
end
在遇到此错误后,我还尝试使用 redis-session-store gem,但这会导致 InvalidAuthenticityToken 错误。
不过,我真的不想将会话存储更改为使用 redis。有什么办法可以解决这个问题还是我错过了什么?
更新 1
sessions_controller.rb(设计)
def destroy
signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
set_flash_message! :notice, :signed_out if signed_out
yield if block_given?
respond_to_on_destroy
end
【问题讨论】:
-
您可以粘贴退出操作的代码吗?
-
我已经这样做了@whodini9。这只是简单的设计代码。我在此操作中没有更改任何内容。
-
您可以尝试在此操作中添加:session.delete(:user_id) 吗?
-
这似乎解决了@whodini9。非常感谢。您能否将其添加为答案,以便我向您推荐?
-
@Herm 我们可以使用 redis-rb gem 与设备集成以进行身份验证和会话管理吗?
标签: ruby-on-rails ruby session devise redis