Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails中加密url_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何在rails中加密url

Ruby on rails 如何在rails中加密url,ruby-on-rails,Ruby On Rails,例如,我在项目中有url:。其中300x300-url中图像裁剪宽度和高度的动态参数。如何加密此url?是否可以通过添加http头的令牌来实现?我需要它来保护服务器不受不同URL的影响,这些URL具有不同的图像宽度和高度(100x100、150x200、300x200…)请显示代码示例。您可以在路由中使用它: get 'images/:id/thumb/:size', size: /^[0-9]+x[0-9]+$/ 在控制器上,您可以访问图像的id和大小,如下所示: def show

例如,我在项目中有url:。其中300x300-url中图像裁剪宽度和高度的动态参数。如何加密此url?是否可以通过添加http头的令牌来实现?我需要它来保护服务器不受不同URL的影响,这些URL具有不同的图像宽度和高度(100x100、150x200、300x200…)请显示代码示例。

您可以在路由中使用它:

get 'images/:id/thumb/:size', size: /^[0-9]+x[0-9]+$/
在控制器上,您可以访问图像的id和大小,如下所示:

def show
    @image= Image.find( params[:id] )
    width, height=params[:size].split("x").map{|s| s.to_i}
    # ...
end
如果您接受的固定大小的图像很少,则可以使用以下约束:

Rails.application.routes.draw do
 get 'images/:id/thumb/:size', size: /^[0-9]+x[0-9]+$/,
    constraints: ImageSizeConstraint.new
end

class ImageSizeConstraint
  def matches?(request)
    params = request.path_parameters

    if %w(100x100 150x200 300x200).include? params[:size]
        return true
    else
        return false
    end
  end
end

从您的问题中,我了解到您希望服务器仅呈现一个可接受的维度。因此,您可以在控制器中对URL进行过滤,而不是加密URL

...
ALLOW_THUMB_SIZES = %w( 100x100 150x200 300x200 )
...
def generate_image
  thumb_size = params[:thumb_size]
  if ALLOW_THUMB_SIZES.include? thumb_size
    # do resize image to thumb_size here
  else
    # resize to some default size e.g. 300x300
    # or throw exception...
  end
end
...

加密url是什么意思?请更具体地说,为什么要加密url?你尝试过什么?你的问题是什么?你能给我们一个你想要实现的加密url的例子吗?你可能对“加密”有不正确的理解?为了保护服务器不产生不同的url和不同宽度和高度的图像(100x100,250x250,400x200…),这可能会有帮助!这个功能已经完成了。如何保护服务器不受url中的不同:大小的影响?更新了我的答案,如果有帮助,请告诉我。既然可以从服务器处理和过滤url,为什么还要从客户端麻烦url呢。永远不要信任来自客户的任何东西:)