gpt4 book ai didi

ruby-on-rails - 在 Rails 3 中将 session 从 cookie_store 迁移到 Redis

转载 作者:IT王子 更新时间:2023-10-29 06:02:56 25 4
gpt4 key购买 nike

我需要将我的 Rails 3 应用程序中的 session 存储从 cookie_store 切换到 redis-session-store .这有很多原因(安全性、与其他 Rails 和非 Rails 应用程序的 SSO)。是否有关于如何不丢失所有当前 session 的最佳实践?

我能想到的是两步走的方法:

  1. 收集 N 天的所有用户 session 并将它们存储在数据库或 Redis 中(如果已存储则更新)。
  2. 使用存储的用户 session 在 Redis 中创建条目。

或者,也可以进行动态迁移。意思是读取cookies,使用secret key解密session数据,作为一个新的session存储在Redis中。

最佳答案

我意识到这张票已经很旧了,但这可能会对其他人有所帮助。我们最终将 session 存储更改为 Redis,但在不再尊重它们之前仍在寻找遗留 cookie(一两周)。

在使用此策略之前,可能需要考虑一些安全问题 - 与必须一次性注销整个用户群的成本相比,您要确保这些风险是值得的。使用 Rails,cookie 被加密并且无法被篡改。

这是我们使用的:

class SessionsController < Devise::SessionsController
LEGACY_COOKIE_NAME = "_old_session_name".freeze

def new
return if detect_valid_cookie

super
end

private

def detect_valid_legacy_cookie
legacy_cookie = request.cookie_jar.encrypted[LEGACY_COOKIE_NAME].presence || {}
valid_user_id = legacy_cookie['warden.user.user.key'].try(:first).try(:first)
return unless valid_user_id

user = User.find_by(:id => valid_user_id)
return unless user

if sign_in user
request.cookie_jar.delete(LEGACY_COOKIE_NAME)
redirect_to root_path # or whever you want
true
else
false
end
end
end

关于ruby-on-rails - 在 Rails 3 中将 session 从 cookie_store 迁移到 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29629299/

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