Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cakephp Ajax登录即使使用错误的数据也会登录_Javascript_Jquery_Ajax_Cakephp - Fatal编程技术网

Javascript Cakephp Ajax登录即使使用错误的数据也会登录

Javascript Cakephp Ajax登录即使使用错误的数据也会登录,javascript,jquery,ajax,cakephp,Javascript,Jquery,Ajax,Cakephp,我有一个简单的html表单可以在我的蛋糕结构之外登录,我通过jquery将登录数据发送到我的登录函数: public function login() { if ($this->request->is('ajax')) { $this->request->data['Appuser']['password'] = Security::hash($this->request->data['password']);

我有一个简单的html表单可以在我的蛋糕结构之外登录,我通过jquery将登录数据发送到我的登录函数:

public function login() {
        if ($this->request->is('ajax')) {

            $this->request->data['Appuser']['password'] = Security::hash($this->request->data['password']);
            $this->request->data['Appuser']['name'] = $this->request->data['name'];

            if ($this->Auth->login()) {
                return $this->redirect($this->Auth->redirectUrl(array('action' => 'returnUserData')));
            }else{
                $this->response->body(json_encode('Login failed!'));
            }
        }elseif($this->request->is('post')){
            if ($this->Auth->login()) {
                return $this->redirect($this->Auth->redirectUrl());
            }else{
                $this->Session->setFlash(__('Invalid username or password, try again'));
            }
        }
    }
非常奇怪的是:

  • 通过post from/view/users/login.ctp表单登录非常有效

  • 当我试图通过ajax从“外部”登录时,我总是登录,即使访问详细信息有误,并且从函数“returnUserData”获取数据

    $('#login')。单击(函数(){


当我设置debug()时;在if($this->request->is('ajax')之后我可以看到它,所以脚本似乎进入了正确的if部分。但我不明白,为什么$this->Auth->login总是返回true…?

你应该总是提到你正在使用的确切cakephp版本。检查$this->data如果是ajax请求,我使用的是2.3。当我使用$this->data时,我只得到这个消息:间接修改overloaded属性ApiController::$data无效
          $.ajax({
              type: "POST",
              url: '/api/login',
              data: {
                  name:     $("#username").val(),
                  password: $("#password").val()
              },
              success: function(data)
              {
                  alert(data);
              }
          });

      });