在cakephp页面控制器中设置权限

在cakephp页面控制器中设置权限,cakephp,authentication,cakephp-2.0,Cakephp,Authentication,Cakephp 2.0,我跟随Andrew Perkins在CakePHP 2.0中设置权限 但是,我的问题与如何在Pages控制器中使用allow and deny方法有关。目前我有$this->Auth->allow('display'),它允许查看页面控制器中的所有方法 如果我只希望主页被允许,而其他页面被拒绝怎么办?我该如何编写代码 提前谢谢。您试用过此代码吗? 您可以将其输出到PageController或直接输入控制器 $views = array ('index'); //array of view th

我跟随Andrew Perkins在CakePHP 2.0中设置权限

但是,我的问题与如何在Pages控制器中使用allow and deny方法有关。目前我有
$this->Auth->allow('display')
,它允许查看页面控制器中的所有方法

如果我只希望主页被允许,而其他页面被拒绝怎么办?我该如何编写代码

提前谢谢。

您试用过此代码吗? 您可以将其输出到PageController或直接输入控制器

$views = array ('index'); //array of view that you want allow
$this->Auth->allow($views);

确保已将PageController.php复制到app/Controller文件夹中。然后,添加beforeFilter回调方法,并根据传递的页面参数设置访问权限:

public function beforeFilter() {   
    // Use $this->request->pass to get the requested page name/id   
    // Decide on access with $this->Auth->allow() 
}
这应该能解决你的问题


您可以在中找到有关请求生命周期的更多信息。这是非常有用的东西。

嗨,谢谢。但问题是Pages控制器有一个输出方法是display(页面实际上由方法中传递的参数决定),因此允许或拒绝显示覆盖了所有页面视图。请尝试将我的行放入控制器中。php不在PageControllerIt不会工作,因为我使用的视图是display,无论显示的页面是什么(CakePHP约定)。将undex更改为display,因为如果您只想允许一个视图,则必须在控制器中执行该操作,而不是在PagesController或其他控制器中