jri*_*iff 4 ruby rack ruby-on-rails
我正在做一些中间件,它会在它到达Rails之前更改authenticity_token参数.
我可以看到env.inspect同时提供了rack.request.form_vars和rack.request.form_hash.两者都包含真实性令牌.Rails使用哪一个,为什么Rack同时提供?
让我们来看看源头!这两个变量来自使用Rack::Request辅助类.它为请求参数提供了一个很好的接口.Rack应用程序不必使用它,但Rails确实使用它.
这些变量是供Rack::Request内部使用的.rack.request.form_vars包含未解析的POST主体并rack.request.form_hash包含已解析的哈希.ActionDispatch::Request继承自Rack::Request并获取参数使用Rack::Request#POST,后者读取后一个变量.你可以用Rack::Request自己来修改它.
class YourMiddleware
def initialize(app)
@app = app
end
def call(env)
req = Rack::Request.new(env)
req.POST["authenticity_token"] = "foo"
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2740 次 |
| 最近记录: |