CakePHP:控制器即使从AuthenticatedController继承也可以访问

时间:2014-04-04 11:38:15

标签: cakephp

我有一个CakePHP应用程序,它既有可公开访问的部分,也有需要身份验证的部分。需要身份验证的所有控制器都继承自以下控制器:

class AuthenticatedController extends AppController {
public $components = array(
        'Cookie',
        'Auth' => array(
                'authenticate' => array(
                        'Form' => array(
                                'fields' => array('username' => 'email_address')
                                )
                        ),
                'loginRedirect' => array('controller' => 'Articles', 'action' => 'index'),
                'logoutRedirect' => array('controller' => 'Pages', 'action' => 'index')
        )
);

// authentication issues
public function login() {
    if ($this->request->is('post')) {
        if (!$this->Auth->login()) {        
            // redirect
            return $this->redirect(array('controller' => 'Articles', 'action' => 'index'));
        } else {
            $this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
        }
    }
}

public function logout() {
    $this->redirect($this->Auth->logout());
}
}

出于某种原因,当我尝试通过网络访问它们时,某些控制器将根据需要重定向到用户/登录。其他人不会 - 他们完全可以访问,即使他们从AuthenticatedController继承。

可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

您不需要创建两种不同类型的控制器

只需为您的所有应用程序创建身份验证(以便在AppController中进行配置)

然后在每个需要公共访问权限的控制器中

$this->Auth->allow('*');

$this->Auth->allow();

beforeFilter函数

这取决于你的蛋糕版本(总是记得指定你的确切版本)