我按照Symfony文档中的“如何构建JSON身份验证端点”教程,但每当我在登录处理程序(空控制器)上进行AJAX调用时,我都会收到500错误
“控制器必须返回一个响应(给定空值)。你有没有忘记 在控制器的某处添加一个return语句?“
我是否正确地认为,因为我在我的安全配置中将/ loginhandler指定为check_path,Symfony不应该运行我提供的空控制器而是覆盖它?当我尝试向控制器添加一个虚拟JSON响应时,它返回就好了。
我做错了什么?我尝试了 / loginhandler 和 loginhandler 作为check_path参数。
这是我的security.yml:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
json_login:
check_path: /loginhandler
我的空控制器是一个空控制器:
/**
* @Route("/loginhandler", name="loginhandler")
*/
public function jsonLoginAction(Request $request)
{
}
最后,这是我的AJAX电话:
fetch('{{ path('loginhandler') }}', {
method: 'post',
body: JSON.stringify({
username: username,
password: password
}),
credentials: 'same-origin'
}).then(function (response) {
submitButton.html(submitButton.attr('data-text')).removeAttr('disabled');
$("#loginForm").removeClass('attempted-submit');
return response.json();
}).then(function (response) {
console.log(response);
});
我正在运行Symfony 3.3.9和PHP 7.1.6。
答案 0 :(得分:1)
他们的文档被破坏了,他们现在忽略了一年多的错误..你需要一个登录和成功的处理程序......尽管不记得如何设置它