【问题标题】:CakePHP 2.1 making a jquery ajax call with Security component activatedCakePHP 2.1 在激活安全组件的情况下进行 jquery ajax 调用
【发布时间】:2012-08-05 20:20:21
【问题描述】:

终于找到了解决方案:

如果有人遇到此问题,请将其放入您的 beforefilter。

$this->Security->unlockedActions = array('givestar');

并将库更新到 Cake 2.3

问题:

我正在努力解决 SECURITY 组件在我的 ajax 调用中对我造成的影响。

var id = 1;

$.ajax({
    type: "post",
    url: "/messages/givestar/",
    data: {"id" : id},
    dataType: "json"
 });

我只是尝试发送控制器的 ID 以更新 id=id 的消息

但安全组件在我所有的 ajax 调用中都对我造成了黑洞。

任何人都知道我如何在激活安全组件的情况下使其工作?

谢谢!

你太棒了!

-汤姆

建议????

更新2 经过一些测试后,我从黑洞收到了一个 AUTH 错误。

From Book: 
‘auth’ Indicates a form validation error, or a controller/action mismatch error.

我已经仔细检查了所有 ACO 节点,它们都很好。我在我的 ajax 调用中反对来自安全组件的 FORM VALIDATION ERROR。

更新:

AppController.php

public $components = array(
        'Acl',
        'Auth',
        'Session',
    'Security',
    'Cookie'
    );
public function beforeFilter() {
    $this->Security->blackHoleCallback = 'blackhole';
}
public function blackhole($type) {
     $this->Session->setFlash(__('ERROR: %s',$type), 'flash/error');
}

MessagesController.php

 public $components = array('RequestHandler');

        public function beforeFilter() {
            parent::beforeFilter();
        }

public function givestar() {
        $this->autoRender = false;
            if ($this->request->is('ajax')) {

                echo 'Working';
            }
        return;
    }

【问题讨论】:

  • 安全组件已激活??表示您要加密id 或将其隐藏在ajax 调用中?
  • aahhh 我的错。我不是蛋糕 php 人..我使用 Zend 框架 + Jquery。SO 中有很多 Cakephp 专家..你很快就会找到你需要的:)
  • 我不想加密任何东西,但安全组件正在保护每个 POST 不被篡改。我已经阅读了有关序列化 ajax 调用和使用 json 来解决这个问题的信息,但我不知道该怎么做......无论如何,谢谢:)

标签: jquery ajax cakephp-2.1


【解决方案1】:

在前置过滤器中:

$this->Security->unlockedActions = array('givestar');

【讨论】:

    【解决方案2】:

    安全组件第 396 行:

    if (!isset($controller->request->data['_Token'])) {
        if (!$this->blackHole($controller, 'auth')) {
            return null;
        }
    }
    

    所以我想如果您想保护此操作,您必须使用额外生成的“_Token”密钥发送数据。此密钥是使用 Form->secure($fields) 方法生成的(实际方法生成具有适当值的隐藏输入)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      相关资源
      最近更新 更多