权限不足时ACL不重定向的Cakephp

权限不足时ACL不重定向的Cakephp,cakephp,permissions,acl,redirect,Cakephp,Permissions,Acl,Redirect,我一直在一个Cakephp网站上工作,几乎完成了,除了标题上的问题,我需要做的是,如果用户没有足够的访问级别继续,我需要重定向到一个页面,如果您在地址栏中写入url,它实际上工作得很好,但当按下一个应该指向同一地址的按钮时,情况就不一样了 这是我的AppController类 class AppController extends Controller { public $components = array( 'Acl', 'Auth' => array(

我一直在一个Cakephp网站上工作,几乎完成了,除了标题上的问题,我需要做的是,如果用户没有足够的访问级别继续,我需要重定向到一个页面,如果您在地址栏中写入url,它实际上工作得很好,但当按下一个应该指向同一地址的按钮时,情况就不一样了

这是我的AppController类

class AppController extends Controller {
public $components = array(
    'Acl',
    'Auth' => array(
        'authorize' => array(
            'Actions' => array('actionPath' => 'controllers')
        )
    ),
    'Session'
);
public $helpers = array('Html', 'Form', 'Session');

public function beforeFilter() {
    //Configure AuthComponent
    //debug($this->params,true);
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
    $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
    $this->Auth->loginRedirect = array('controller' => 'posts', 'action' => 'add');
    $this->Auth->authError = "Error";
            if (isset($this->params['requested'])) $this->Auth->allow($this->action); 
}
$this->Auth->authError = "Custom error message here";
这是指向“添加”页面的链接示例,如果不允许用户执行此操作,则应重定向到my AppController中配置的页面

<?php echo $this->Html->link($this->Html->image("add.png", array("alt" => "Agregar nueva encuesta","title" => "Agregar nueva encuesta")),
        array('controller'=>'Surveys','action'=>'add',$beneficiary['Beneficiary']['id']),
        array('escape' => false));?>

因此,需要明确的是,如果用户写入地址“myserver/受益人/add/parameter”被重定向到显示他无法执行该操作的页面,但如果他按下链接,则什么都不会发生,他无法添加任何内容,但我需要重定向

如果您有任何建议,我将不胜感激

我希望我的解释清楚,我的英语还远远不够完美:)

编辑:

我决定听从用户Ben Hitchcock关于使用web调试器“Charles”的建议。这就是我得到的

在地址栏写入

请求 GET/Projects/SUISEPV2/受益人/edit/1 HTTP/1.1 主机本地主机 用户代理Mozilla/5.0(Windows NT 6.3;WOW64;rv:26.0)Gecko/20100101 Firefox/26.0 接受text/html、application/xhtml+xml、application/xml;q=0.9,/;q=0.8 接受语言es,es;q=0.8,在美国;q=0.5,en;q=0.3 接受编码gzip,放气 Cookie CAKEPHP=7399cvgls9gurk37ubes1fknf0 连接保持活动状态

响应 找到HTTP/1.1 302 日期2014年1月20日星期一16:54:56 GMT 服务器Apache/2.4.7(Win32)OpenSSL/0.9.8y PHP/5.4.22 X-Powered-By-PHP/5.4.22 位置myserver/Projects/SUISEPV2/posts/add 内容长度0 保持活动超时=5,最大值=100 连接保持活动状态 内容类型text/html;字符集=UTF-8

按下链接

请求: GET/Projects/SUISEPV2/受益人/edit/1 HTTP/1.1 主机本地主机 用户代理Mozilla/5.0(Windows NT 6.3;WOW64;rv:26.0)Gecko/20100101 Firefox/26.0 接受text/html、application/xhtml+xml、application/xml;q=0.9,/;q=0.8 接受语言es,es;q=0.8,在美国;q=0.5,en;q=0.3 接受编码gzip,放气 Referer myserver/Projects/SUISEPV2/受益人 Cookie CAKEPHP=7399cvgls9gurk37ubes1fknf0 连接保持活动状态

答复: 找到HTTP/1.1 302 日期2014年1月20日星期一格林尼治标准时间16:55:33 服务器Apache/2.4.7(Win32)OpenSSL/0.9.8y PHP/5.4.22 X-Powered-By-PHP/5.4.22 位置myserver/Projects/SUISEPV2/受益人 内容长度0 保持活动超时=5,最大值=100 连接保持活动状态 内容类型text/html;字符集=UTF-8


不幸的是,我还是看不出有什么问题

我找到了一个解决方案,效果比我想要的要好

在我的布局中,我添加了下一行

<?php echo $this->Session->flash('auth'); ?>
结果如下:

如果我按下链接按钮,我不会被重定向,但我会收到一条消息,显示我想告诉用户什么。
如果我写下地址,我将被重定向到错误页面,同时我也会收到闪光消息。

链接是否应该有“controller”=>“受益人”,而不是“controller”=>“调查”?在这种情况下,该按钮的操作不是向所选受益人添加一项调查,但并不重要,即使我试图编辑或删除用户不允许执行的任何操作,问题也会发生。您可能会进入重定向循环。我会尝试运行Charles(web代理)并检查发送到服务器的内容和返回的内容。我安装Charles是为了检查发生了什么,并编辑了我的问题,很抱歉,我找不到发生了什么。