symfonyのドキュメントにある「JSON認証エンドポイントを構築する方法」のチュートリアルに従いましたが、ログインハンドラ(空のコントローラ)でAJAX呼び出しを行うたびに、 500エラーは、「コントローラが(ヌルが与えられた)応答を返さなければなりません。あなたは に忘れてしまいましたどこかのコントローラでreturn文を追加しますか?」Symfonyの "json_login"セキュリティパラメータがコントローラを初期化しない
言って
セキュリティコンフィグレーションのcheck_pathに/ loginhandlerを指定しているので、私が提供した空のコントローラを実行するのではなく、代わりに上書きするべきだと思いますか?ダミーの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を実行しています。
を、それを設定する方法を覚えていないhandler..althoughログインおよび成功を持っている必要がありnow..you年以上のためのバグを無視していますあなたのコントローラの応答、例えば〜のようなものです。〜 '新しいJsonResponse(['status' => 'ok']);' –
@PeterPopelyshkoを返しますが、このチュートリアルではコントローラが空でなければならないことを明示しています。 Symfonyセキュリティシステムは、コントローラへの要求を代行し、独自の値を返さなければなりません。私は既にダミーのレスポンスを返そうとしましたが(書きましたが)動作しましたが、セキュリティプロセスはまだ初期化されていませんでした。 – user3453428
symfony 3.4.1で同じ問題が発生しました。私の 'check_path'は'/api/v1/token'です。 ''/api/v1/token 'というパスのコントローラを見つけることができません。ルートは間違って設定されていますが、テスト環境でのみ、開発環境では動作します... –