【问题标题】:What is the best way to read the Rails session secret?阅读 Rails 会话密码的最佳方法是什么?
【发布时间】:2010-09-16 13:39:48
【问题描述】:

我想以编程方式访问 Rails 会话密码(我正在使用它来生成登录令牌)。

这是我想出的:

ActionController::Base.session.first[:secret]

这将返回会话密钥。但是,每次调用 ActionController::Base.session 时,它都会向数组中添加另一个条目,因此您最终会得到如下结果:

[{:session_key=>"_new_app_session", :secret=>"totally-secret-you-guys"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]

这让我觉得不好。

有没有更好的方法来访问会话密钥?

【问题讨论】:

    标签: ruby-on-rails ruby session


    【解决方案1】:
    ActionController::Base.session_options_for(request,params[:action])[:secret]
    

    【讨论】:

      【解决方案2】:

      谢谢,杰克。

      由于秘密不会根据请求或操作而改变,这也有效:

      ActionController::Base.session_options_for(nil,nil)[:secret]
      

      【讨论】:

        【解决方案3】:

        对于 Rails 2.3,我使用过:

        ActionController::Base.session_options[:secret]
        

        【讨论】:

        • 酷,看起来更干净。升级时我必须更新我们的代码。
        【解决方案4】:

        对于 Rails4

        Rails.configuration.secret_token
        Rails.configuration.secret_key_base
        

        对于 Rails3

        Rails.configuration.secret_token
        

        但是如果对于 Rails2.x,就像 Don Parish 提到的那样

        ActionController::Base.session_options[:secret]
        

        【讨论】:

        • 两者都为零。这不正常,是吗?前几天我介绍了一个config/secrets.yml文件,可能没读?
        • 可以通过Rails.application.secrets 访问添加到该文件的机密。
        【解决方案5】:

        对于 Rails 3,Rails.configuration 与 Rails.application.config 相同,因此 Rails.configuration.secret_token 就像 choonkeat 提供的一样。

        【讨论】:

          猜你喜欢
          • 2011-06-12
          • 2010-09-13
          • 2011-05-20
          • 2011-07-16
          • 1970-01-01
          • 2022-01-25
          • 2012-08-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多