1

我创建了一个 CakePHP 应用程序,其中我创建了一个UsersController处理所有关于用户的 . 当我尝试浏览www.mydomain.com时,如果我已登录,它会让我看到索引 ( app/View/Pages/home.ctp)。否则,它会将我重定向到mydomain.com/users/login并坚持登录。

我试过查看AppController.php,PagesController.phpapp/Config/core.phpand app/Config/routes.php,但没有找到任何东西。我UsersController.php认为,我也不对此负责。

我不记得了,我找不到如何禁用它。哪个文件应该对此负责?

编辑:我的 CakePHP 版本是 2.3。

4

1 回答 1

2

通常,您可以使用auth componentsallow()方法公开特定操作。

如果您只想公开特定页面,则公开页面可能需要做更多的工作,因为PagesController在单个操作 ( display()) 中处理所有页面。如果是这种情况,那么您可以利用request->params['pass'][0]which 将保存页面名称,根据允许的页面列表对其进行测试,然后display使用Auth::allow.

例如,在PagesController

public function beforeFilter()
{
    parent::beforeFilter();

    $allowedPages = array('home', 'foo', 'bar');
    if(isset($this->request->params['pass'][0]) &&
       in_array($this->request->params['pass'][0], $allowedPages))
    {
        $this->Auth->allow('display');
    }
}

这将允许页面home,foobar无需登录即可查看。

如果您想公开所有页面,那么您可以Auth::allow在没有任何条件的情况下简单地使用,即:

public function beforeFilter()
{
    parent::beforeFilter();
    $this->Auth->allow('display');
}
于 2013-08-02T13:57:46.867 回答