Rails 的 wrap_parameter 对签名的影响

环境

  • rails 6.0
  • ruby 2.6.5

最近的一个小项目里边,接口安全方面使用了 timestamp + sign 的方式。但是发现了两个问题:

  1. railsrestful路由把路径中的参数也加入到参数数组中了。比如show的路由/posts/1,会在params中加入id: 1,导致前端加密时使用的参数和我后端拿到的参数不一致

  2. railswrap_parameter也会在restful路由中加入额外的字段


解决方案

对于第一个问题,我的做法是让前端在请求参数中也带上相应的参数,如posts/1,就加一个id=1的参数,这样前后端加密请求参数得到的结果就是一样的。

第二个问题,因为我没有用到wrap_parameter,所以我直接在配置文件里边关掉了,一方面也能节省微不足道的性能

# config/initializers/wrap_paramters.rb

ActiveSupport.on_load(:action_controller) do
  # wrap_parameters format: [:json]
    wrap_parameters format: []  # format 设置为空即可
end
点赞

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注