我正在尝试在CakePHP 2.3中使用AuthComponent,但它的行为并不像我期望的那样。
基本上,我做的时候
$这 - > Auth->允许( '观看');
用户只能访问view方法,这就是发生的事情。
问题是,当用户登录时,他突然也可以访问“添加”方法(此时我在控制器中唯一的其他方法。当他退出时,他无权添加再来一次。
这是我的代码:
// AppController的
<?php
App::uses('Controller', 'Controller');
class AppController extends Controller {
public $components = array(
'Session',
'Auth' => array(
'authenticate' => array(
'Blowfish' => array(
'fields' => array('username' => 'email', 'password' => 'password')
)
)
)
);
public function beforeFilter() {
$this->Auth->deny('add');
$this->Auth->allow('view');
}
}
我的PagesController就是这样:
<?php
App::uses('AppController', 'Controller');
class PagesController extends AppController {
public $uses = array('Pages');
public function view($id = null) {
echo 'In view';
}
public function add($id = null) {
echo 'In add';
}
}
答案 0 :(得分:2)
你误解了allow()/ deny()的作用。它们用于指定是否可以使用或不使用身份验证(也称为登录)访问操作。这并不意味着在用户登录后控制授权即控制对操作的访问。为此,您需要配置授权。阅读this应该有助于您更好地理解。
答案 1 :(得分:1)
如果你在cakephp 2.x上工作,你必须这样做:
function beforeFilter(){
$this->Auth->allow(array('action you want to allow1','action you want to allow2'));
}
---将该代码放入控制器中,您希望无需登录即可访问
如果你使用$ this-&gt; Auth-&gt; allow()你必须调用parent :: beforeFilter();在函数beforeFilter()中这样:
function beforeFilter(){
parent::beforeFilter();
$this->Auth->allow('add','view');
}