我在控制器some_controller
中编写了两个允许某人下载文件的操作。程序如下:
some_controller/export_data
并点击表单以生成文本文件。export_data()
为用户写入文本文件。some_controller/download_file
。我的问题是,如何让用户手动无法访问some_controller/download_file
?即我想阻止用户在浏览器中输入此URL并下载文件。我尝试设置protected function _download_file()
,但这会导致视图无法访问some_controller
中的操作。
我觉得我接近这个错误的方式。有人想给我一些指示吗?
答案 0 :(得分:2)
当用户点击generate a text file
按钮时:
在some_controller/export_data
操作中设置会话变量
在some_controller/download_file
操作中,首先检查该会话变量。
如果已设置,则允许用户下载文件并销毁会话。
如果不是,那么现在允许他下载文件。
通过这种方式,您可以指定some_controller/download_file
public
个访问权限。
如果用户直接访问some_controller/download_file action
,则会话变量不会出现,他无法下载该文件。
答案 1 :(得分:1)
由于您在用户点击下载按钮时需要,因此无法保护操作。你能做的最好的就是保护它,这是完全可以接受的。例如,您可以执行以下操作: