限制对Controller的外部访问,但允许从Model(CakePHP 2.X)进行访问

时间:2013-03-21 02:28:53

标签: cakephp

在我们的应用程序中,我们使用Controller和View生成PDF文件,可以通过电子邮件发送给用户,Controller渲染视图文件并将其传递回模型。

它的设置是这样的,因为在应用程序的另一部分,我们使用相同的视图文件在页面上显示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

1 个答案:

答案 0 :(得分:2)

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