Reactjs 使用React+;CakePHP3-认证->;identifite()返回false

Reactjs 使用React+;CakePHP3-认证->;identifite()返回false,reactjs,cakephp-3.0,Reactjs,Cakephp 3.0,我是ReactJS和Cakephp的新手。我已经成功地编写了一些api来检索/过滤数据库中的帖子,但现在我正在努力解决身份验证部分 实际上,我已经很容易地完成了注册,现在我正在尝试制作一个登录表单(使用React)。我可以将用户名和密码数据发送到后端,但是$this->Auth->identifite()返回false 这是我已经检查/做过的: DB密码列长度255 varchar DB用户密码在注册后正确哈希 将带有用户数据的用户实体传递给Identified()方法作为参数 $this->

我是ReactJS和Cakephp的新手。我已经成功地编写了一些api来检索/过滤数据库中的帖子,但现在我正在努力解决身份验证部分

实际上,我已经很容易地完成了注册,现在我正在尝试制作一个登录表单(使用React)。我可以将用户名和密码数据发送到后端,但是$this->Auth->identifite()返回false

这是我已经检查/做过的:

  • DB密码列长度255 varchar

  • DB用户密码在注册后正确哈希

  • 将带有用户数据的用户实体传递给Identified()方法作为参数

  • $this->request->input('json_decode',true);正确返回用户名和密码(密码未散列)

所以我有一些疑问:

  • 我通过fetch()以JSON的形式传递用户数据,但是当它到达后端时是纯文本的,所以我需要在identify()处理数据之前对该数据进行JSON_编码吗?或者identification()在我的数据库中查找用户/传递密码时是否对我的密码进行哈希
反应

handleSubmit(e){
e、 预防默认值();
让myHeaders=newHeaders();
//国家结构
//this.state={用户名:'username',密码:'123asdqwe'};
设myInit={
方法:“POST”,
标题:myHeaders,
模式:“cors”,
正文:JSON.stringify(this.state)
};
fetch('url/users/login',myInit)
.then(()=>{console.log(“done”);});
}
CakePHP登录函数(基本)

公共函数登录()
{
如果($this->request->is('post')){
$user=$this->Auth->identify();
如果($user){
$this->Auth->setUser($user);
$this->response->body(json_encode(数组(“user_id”=>$this->Auth->user('id')));
返回$this->response;
}否则{
$this->response->body(json_编码(数组(“error”=>“error”));
返回$this->response;
}
}
}
事实上,我不知道该怎么做,我在网上找不到任何例子,医生也没有给我任何线索

我应该如何在登录前处理数据


谢谢。

我对react不太熟悉,它是否发送了一个带有
application/json
Accept
标题?您是否已将CakePHP设置为能够处理JSON请求(即加载了主体解析器中间件或请求处理程序组件)?您好@ndm,感谢您的帮助。我已经像你说的那样修改了我的头('Accept':'application/json','Content-Type':'application/json'),请求处理程序已经启用,现在Auth->identifite()返回正确的用户。但是在网络选项卡中,现在我看到它调用users/login两次:第一次返回空响应,第二次返回json并没有隐藏我的用户数据(第二次是预期的行为)。您的
模式
选项设置为
cors
,因此我猜第一个请求是一个。感谢您的帮助!我将阅读很多关于这方面的内容。我对react不太熟悉,它是否会发送一个带有
application/json
Accept
标题?您是否已将CakePHP设置为能够处理JSON请求(即加载了主体解析器中间件或请求处理程序组件)?您好@ndm,感谢您的帮助。我已经像你说的那样修改了我的头('Accept':'application/json','Content-Type':'application/json'),请求处理程序已经启用,现在Auth->identifite()返回正确的用户。但是在网络选项卡中,现在我看到它调用users/login两次:第一次返回空响应,第二次返回json并没有隐藏我的用户数据(第二次是预期的行为)。您的
模式
选项设置为
cors
,因此我猜第一个请求是一个。感谢您的帮助!我会读很多关于这个的东西。