Ruby on rails 如何在rails中加密url
例如,我在项目中有url:。其中300x300-url中图像裁剪宽度和高度的动态参数。如何加密此url?是否可以通过添加http头的令牌来实现?我需要它来保护服务器不受不同URL的影响,这些URL具有不同的图像宽度和高度(100x100、150x200、300x200…)请显示代码示例。您可以在路由中使用它: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
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呢。永远不要信任来自客户的任何东西:)