2 回答
TA贡献1866条经验 获得超5个赞
您应该尝试使用rails5session 库:
从自述文件:
使用您的 Rails 会话密钥库创建加密实例(在 config/secrets.yml 中指定)
encryption := rails5session.NewEncryption(
secretKeyBase,
cookieSalt,
signedCookieSalt,
)
您可以通过运行以下 ruby 代码来获取 cookieSalt:
Rails.application.encryption.action_dispatch.encrypted_cookie_salt
您可以通过运行以下 ruby 代码来获取 signedCookieSalt:
Rails.application.encryption.action_dispatch.encrypted_signed_cookie_salt
然后验证并解密用户的cookie,它将返回解密的字节片和错误(如果有)。
data, err := rails5session.VerifyAndDecryptCookieSession(encryption, cookie)
if err != nil {
panic(err)
}
TA贡献1744条经验 获得超4个赞
redis
您可以使用数据存储作为中央共享内存在两个后端(无论后端如何)之间共享会话。
Rails
因此,每当您在或应用程序中创建新会话时Go
:
创建会话 ID(例如 UUID)
a59eb448-d268-413e-a837-b5aefc65a4b2
redis
您将使用该唯一会话 ID ( )存储您的会话详细信息a59eb448-d268-413e-a837-b5aefc65a4b2
。您将会话 ID 存储在两个平台域之间共享的 cookie 中。因此,如果是
rails.mydomain.com
,go.mydomain.com
那么您需要使 cookie 可以从两个子域访问*.mydomain.com
。当具有此 cookie 的用户访问您的任何平台时。你可以从他的 cookie 中读取 session-id 并用它来查询 redis 并获取会话信息(user_id 等)。
通过这种方式,您可以使用 cookie 在客户端的不同子域之间共享会话,并使用 redis 在服务器端的不同后端共享。
- 2 回答
- 0 关注
- 99 浏览
添加回答
举报