3
我试图将一个登录Web界面连接到已在AWS上创建的身份验证活动存储库。我是新的,我已经尝试使用邮差这样做,与这样的JSON应用原始模板:在PHP中处理cURL
{
"userName" : "Victor",
"userPassword" : "pwd123"
}
而且它正常工作,我收到我的信息库中的正确答案。但是当我使用我的php项目来完成这项工作时,我用相同的数据填充表单,我收到一个状态:403消息:错误的用户名或密码。
邮差代码,为我提供了CURLOPT_POSTFIELDS该解决方案:
CURLOPT_POSTFIELDS => "{\n\t\"userName\" : \"Victor\",\n\t\"userPassword\" : \"pwd123\"\n}",
但我需要填充表单字段这让我改变他们,我会告诉你。
下面是我用的,我真的卡住,所以我会心存感激的任何帮助:)
public function loginAction(Request $request)
{
$twigParams=array();
$DTO = new LoginDTO($request, $this->container, null);
$form = $DTO->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$upass = $DTO->getUserPass();
$uname = $DTO->getUserName();
$curl = curl_init();
$fields=array("userName"=> $uname, "userPassword"=> $upass);
curl_setopt_array($curl, array(
CURLOPT_PORT => "80",
CURLOPT_URL => "http://wt-services-internal-appl-blablabla..",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $fields ,
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: application",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
$twigParams["form"]=$form->createView();
return $this->render('auth/login.html.twig', $twigParams);
}
现在已经解决了,我注意到在我的身份验证存储库中,我有JSON格式的访问数据,而且我没有以JSON格式发送数据,所以我做的正确的是: $ fields = array(“userName”=> $ uname,“userPassword”=> $ upass); $ fields = json_encode($ fields); 然后我将该数组放入CURLOPT_POSTFIELDS中,并在CURLOPT_HTTPHEADER中将“content-type:application/json”的“content-type:application”更改为。无论如何,请继续编码! –
写这个评论作为一个答案,而不是接受它。它将为您赢得一点名誉,并让其他开发者更容易看到答案。 – Ray