我想在cakephp中为我的网站创建一些权限,但不是工作权限检查。
我只想例如仅允许页面add
,而index
或register
这样的其他页面无法访问。
这是我的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');
}
为什么我可以访问其他页面?感谢
答案 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'
}