我在CakePHP 2中使用AuthComponent。
我想向匿名用户展示“主页”视图并拒绝“测试”视图。
两个视图都位于文件夹Views / Pages
中如果我使用此代码:
public function beforeFilter(){
parent::beforeFilter(); //calling parents before filter
$this->Auth->allow('home'); //allowing home only for pages controller
}
在我的PagesController中我无法访问PagesController的任何页面,包括home.ctp。
如果我使用:
$this->Auth->allow('display')
在我的PagesController中,我可以访问PagesController的任何页面,包括test.ctp。
我该如何解决这个问题?
我尝试在PagesController名称home()上创建一个新方法。但没有成功。
答案 0 :(得分:1)
这是一个很好的答案。 Allowing a Specific Page in Cakephp
请记住,Auth-> allow适用于方法。显示是页面控制器中的方法。主页被视为显示中使用的变量。因此,您必须在Pages控制器中以编程方式执行此操作。
答案 1 :(得分:1)
情况一:如果您不想使用CakePHP的默认“显示”功能。
在PagesController中创建一个名为home()的新方法, 您还必须更改文件app \ Config \ routes.php中的代码,如下所示,使其适用于家庭而不是其他方法,此新代码将所有查询重定向到页面控制器到home.ctp。
//default code statement:
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
//New code
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'home'));
情况二:如果你想保留CakePHP的默认'display'功能
然后,当访问者访问test.ctp页面时,您必须在显示功能中构建一些重定向逻辑,@ Chuck Burgess也会通过链接回答。