0

在我们的应用程序中,我们使用控制器和视图来生成可以通过电子邮件发送给用户的 PDF 文件,控制器呈现视图文件并将其传递回模型。

之所以这样设置,是因为在应用程序的另一部分中,我们使用相同的视图文件在页面上显示 PDF(这需要 POST 数据)。

我的问题是我需要能够从我的模型中访问控制器功能,但是我想阻止某人(直接使用网站)直接执行控制器功能。

在模型中:

$Contents = new ContentsController();
$message = $Contents->generatePDF($viewVars);

在控制器中:

public function generatePDF($input_data)
{

    //set the original data and the check result to build the page:
    foreach($input_data as $key => $value)
    {
        $this->set($key, $value);
    }

    //instantiate a new View class from the controller
    $view = new View($this);

    $viewData = $view->render('pdf_file', 'pdf');

    return $viewData;
}

哪个有效,但是如果用户在他们的浏览器中输入 /Contents/generatePDF 他们可以访问这个控制器功能,所以我希望能够防止它被直接从网络访问。

我正在使用 CakePHP 2.X

4

1 回答 1

2

最简单的方法是在控制器方法的名称前加上下划线:_generatePDF. 此类方法无法通过浏览器访问。

于 2013-03-21T07:45:49.877 回答