【问题标题】:CakePHP AuthComponent how to allow specific viewCakePHP AuthComponent 如何允许特定视图
【发布时间】:2013-11-15 20:15:15
【问题描述】:

我希望我的家 (View/Pages/home.ctp) 成为公共视图,因为每次我尝试访问时,都会将我重定向到 /users/login.. AppController.php:

public $components = array(
      'Session',
      'Auth' => array(
         'loginRedirect' => array('controller' => 'users', 'action' => 'areaRestrita'),
         'logoutRedirect' => array('controller' => 'users', 'action' => 'logout'),
            'authError' => 'Você deve fazer login para ter acesso a essa área!',
            'loginError'=> 'Combinação de usuário e senha errada!'
      )
    );

过滤前:

public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow( 'index' );
    }

我该怎么办?我试图在 pagesController.php 中放置一个 beforeFilter 以允许('display')但不起作用。

【问题讨论】:

标签: php cakephp


【解决方案1】:

您允许使用 Auth 的操作而不是视图。 CakePHP 的默认 Pages 控制器使用相同的 display() 操作来呈现所有静态视图。因此,如果您只想允许主页,请为其创建单独的操作并将“/”路由到该操作,或者在beforeFilter() 中使用$this->request->params 来检查请求是否针对主页并使用$this->Auth->allow()

【讨论】:

  • 我该如何使用第二种方式?我试图将这个 $this->Auth->allow($this->request->params['requested']); 放在 Pages 的 beforeFilter 中,但没有用。
  • Auth->allow() 采用动作名称(或无参数)。 $this->request->params['requested'] 不是动作名称。
  • 动作来自控制器?那么,我必须为我希望未登录用户看到的每个页面创建一个控制器吗?抱歉,我是新手。
  • 我建议你阅读 CakePHP 手册并了解控制器的基本知识以及如何处理请求。
  • 哦,我使用了不带参数的允许,并且有效!谢谢朋友
猜你喜欢
  • 1970-01-01
  • 2013-06-29
  • 2014-03-15
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多