1

我在 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() 上创建一个新方法。但没有成功。

4

2 回答 2

1

这里给你一个很好的答案。 允许 Cakephp 中的特定页面

请记住,Auth->allow 用于方法。显示是页面控制器中的方法。主页被认为是显示中使用的变量。因此,您必须在 Pages 控制器中以编程方式执行此操作。

于 2013-01-17T21:42:18.963 回答
1

情况一:如果你不想使用 CakePHP 默认的“显示”功能。

除了在 PagesController 中创建一个名为 home() 的新方法之外,您还必须更改文件 app\Config\routes.php 中的代码,如下所示,以使其适用于 home 而不适用于其他方法,这个新代码重定向所有查询到页面控制器到 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 也通过链接回答。

于 2013-01-18T05:23:13.460 回答