0

我想在 cakephp 中为我的网站创建一些权限,但不能进行权限检查。我只想例如只允许add其他页面喜欢indexregister无权访问的页面。

这是我的 AppController 组件

public $components = array(
        'Session',
        'Auth' => array(
            'loginAction' => array('controller'=>'users','action'=>'login', 'admin'=>false),
            'logoutRedirect' => array('controller'=>'users','action'=>'logout'),
            'loginRedirect' => array('controller'=>'shows', 'action'=>'index'),
            'authError' => 'Questa risorsa non sembra appartenere al tuo account, oppure non hai eseguito l\'accesso',
            'autoRedirect' => false,
            'authorize' => array(
                'Controller',
                'Actions' => array(
                    'actionPath' => 'controllers'
                )
            ),
            'authenticate' => array(
                'Form' => array(
                    'fields' => array('username' => 'email')
                )
            )
        )
    );

这是 UserController 中的 beforeFilter:

public function beforeFilter () {
   parent::beforeFilter();  
   $this->Auth->deny('*'); //I have also tried $this->Auth->deny();
   $this->Auth->allow('register');
}

为什么我可以访问其他页面?谢谢

4

2 回答 2

0

来自 Cakephp 书:默认情况下,所有操作都需要授权。但是,在公开操作后,您希望撤销公共访问权限。您可以使用 AuthComponent::deny() 来做到这一点:您对拒绝所做的事情可能只是因为缺乏 Auth 工作原理的知识。请检查这个http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html $this->Auth->deny(); // 将删除所有动作。

于 2013-11-13T22:55:35.157 回答
0

您应该使用 cakephp 的 Acl 组件,它为您提供了一个完美的场景,您可以在该场景中决定应该授予哪些页面权限,哪些不授予权限

阅读:- http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html

然后在 AppController 中调用组件

class AppController extends Controller {

public $components = array(
    'Acl'

}

于 2013-11-14T06:34:56.073 回答