1

我正在研究一种在 Rails 应用程序和Kemal应用程序之间进行会话的方法。我现在可以手动执行此操作,但是kemal 的这个库允许扩展会话的处理方式。我已经在这里开始了。

我的问题是,当我从 rails 解密会话 cookie 值时,我得到一个哈希值,其中包含一个session_id值,例如0cc175b9c0f1b6a831c399e269772661. 这是如何session_id产生的?当我在这里扩展引擎时,这是否与我需要传递的 session_id 相同?还是将整个会话 cookie 值视为“id”?

这是如何在 Rails 中解密的示例:

secret_key_base = "a0aaa0a00a000a00a0a0aa00a0aa000a000aa0a0a0a0a0000a0000a00aaa00000000aa0aa00000000a00000a000a000000a00aaa0a0000000a0000a0a0aaa000"
key_generator = ActiveSupport::CachingKeyGenerator.new(ActiveSupport::KeyGenerator.new(secret_key_base, iterations: 1000))
secret = key_generator.generate_key("encrypted cookie")
sign_secret = key_generator.generate_key("signed encrypted cookie")
encryptor = ActiveSupport::MessageEncryptor.new(secret, sign_secret, serializer: JSON)
hash = encryptor.decrypt_and_verify("SOME_REALLY_LONG_STRING")
puts hash["session_id"] #=> 0cc175b9c0f1b6a831c399e269772661

编辑(澄清):我目前有 2 个轨道应用程序在它们之间共享会话。我的目标是用 kemal 应用程序替换其中一个 rails 应用程序。我目前在 rails -> kemal 有这个工作,但是去 kemal -> rails 是行不通的。

Rails 是如何产生这个session_id价值的?我应该在 kemal 中以同样的方式生成这个值吗?

4

0 回答 0