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 關注
- 128 瀏覽
添加回答
舉報