允许某些页面cakephp的权限

时间:2013-11-13 21:54:16

标签: php cakephp

我想在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');
}

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

2 个答案:

答案 0 :(得分:0)

From Cakephp book:默认情况下,所有操作都需要授权。但是,在公开操作后,您要撤消公共访问权限。您可以使用AuthComponent :: deny()来执行此操作: 你在做什么与否认可能只是因为缺乏Auth如何工作的知识。请检查http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html $这 - > Auth->否认(); //将删除所有操作。

答案 1 :(得分:0)

你应该使用acl Component of cakephp,它为你提供了一个完美的场景,你可以决定你应该给予哪个页面以及哪个页面不是

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

然后在AppController中调用组件

class AppController extends Controller {

public $components = array(
    'Acl'

}