我有一个关于 Rails 如何处理 cookie 的问题 加密/解密。
我在我的 config/environment.rb 中有这个
config.action_controller.session = {
:session_key => [some key],
:secret => [some secret]
}
这在 config/environment/production.rb 等中:
ActionController::Base.session_options[:session_domain] = [some
domain]
到目前为止,一切顺利——只要我所有的 Rails 应用程序都具有相同的 session_key 和 secret,在同一个域,都可以用 同样的 cookies 。
但是,一位同事现在有一个 JSP 应用程序(在同一域中), 他想用它来读取我设置的 cookie。
那么,给定一个 secret 和一个加密的 cookie 值,我们将如何解密 获取该 cookie 的内容?
(文档似乎表明这是默认的单向 SHA1 加密 -- http://caboo.se/doc/classes/CGI/Session/CookieStore.html - 但 那么我的 Rails 应用程序将如何读取 cookie 的内容 那是单向加密的?)
在此先感谢您提供任何提示/指示/见解,
乔
最佳答案
如果您直接从应用数据库中存储的 session 数据中提取 session.data 字段(如果您在 environment.rb 文件中使用 active_record_store)
config.action_controller.session_store = :active_record_store
...这是解码它并返回哈希的方法:
Marshal.load(ActiveSupport::Base64.decode64(@session.data))
... 或在 Rails >= 3.2 中(感谢 Chuck Vose)
Marshal.load(Base64.decode64(@session.data))
它根本没有加密。
关于ruby-on-rails - 给定 session key 和 secret ,我们如何解密 Rails cookies?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1941499/