Javascript Cakephp Ajax登录即使使用错误的数据也会登录
我有一个简单的html表单可以在我的蛋糕结构之外登录,我通过jquery将登录数据发送到我的登录函数: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']);
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);
}
});
});