2017-10-03 4 views
0

symfonyのドキュメントにある「JSON認証エンドポイントを構築する方法」のチュートリアルに従いましたが、ログインハンドラ(空のコントローラ)でAJAX呼び出しを行うたびに、 500エラーは、「コントローラが(ヌルが与えられた)応答を返さなければなりません。あなたは に忘れてしまいましたどこかのコントローラでreturn文を追加しますか?」Symfonyの "json_login"セキュリティパラメータがコントローラを初期化しない

言って

セキュリティコンフィグレーションのcheck_pathに/ loginhandlerを指定しているので、私が提供した空のコントローラを実行するのではなく、代わりに上書きするべきだと思いますか?ダミーのJSONレスポンスをコントローラに追加しようとしたところ、正常に戻りました。

私は間違っていますか?私は/loginhandlerloginhandlerの両方を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

を、それを設定する方法を覚えていないhandler..althoughログインおよび成功を持っている必要がありnow..you年以上のためのバグを無視していますあなたのコントローラの応答、例えば〜のようなものです。〜 '新しいJsonResponse(['status' => 'ok']);' –

+0

@PeterPopelyshkoを返しますが、このチュートリアルではコントローラが空でなければならないことを明示しています。 Symfonyセキュリティシステムは、コントローラへの要求を代行し、独自の値を返さなければなりません。私は既にダミーのレスポンスを返そうとしましたが(書きましたが)動作しましたが、セキュリティプロセスはまだ初期化されていませんでした。 – user3453428

+0

symfony 3.4.1で同じ問題が発生しました。私の 'check_path'は'/api/v1/token'です。 ''/api/v1/token 'というパスのコントローラを見つけることができません。ルートは間違って設定されていますが、テスト環境でのみ、開発環境では動作します... –

答えて

0

そのドキュメントは壊れていると、彼らはあなたが返す必要があります

関連する問題