我有一条路线,ID的值是加密的,这意味着在调用该动作之前必须先对其进行解密,我的问题是我如何获取ID,对其进行解密并将新的ID设置为该路线一个before_action过滤器,下面是我尝试过的 控制器:
before_action :reverse_id, only: :public_download
def reverse_id
@swapped_id = params[:id]
@id = ScatterSwap.reverse_hash(@swapped_id).to_i
params[:id] = @id
end
def public_download
//do something
end
这是我的路线
get "get_score/:id/", to: "controller_name#public_download", as: :get_score
答案 0 :(得分:1)
此代码无效。我在网址中输入了相同的ID,而不是解密后的值
幸运的是,您根本不需要变异参数。为什么不简单地将MyModel.find(params[:id])
替换为MyModel.find(decrypt(params[:id]))
? (其中decrypt
方法仅这样做,解密)