このエラーメッセージで Symfony ログインが失敗するという、かなり一般的な問題があります。
Unable to find the controller for path "/auth/login_check".
この問題に対する一般的な答えは、login_check
ルートがファイアウォールの背後にないことですが、私の場合はそうです! ここに私の設定ファイルがあります:
アプリ/構成/セキュリティ.yml
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
auth_area:
pattern: ^/auth/(login|login_check)
anonymous: ~
secured_area:
pattern: ^/
form_login:
login_path: /auth/login
check_path: /auth/login_check
logout:
path: /auth/logout
target: /
アプリ/構成/ルーティング.yml
login:
pattern: /auth/login
defaults: { _controller: AuthBundle:Default:login }
login_check:
pattern: /auth/login_check
logout:
pattern: /auth/logout
AuthBundle/Controller/DefaultController.php
public function loginAction()
{
$form = $this->createForm(new UserType(), new User());
return $this->render('AuthBundle:Default:login.html.twig', array(
'form' => $form->createView(),
'action' => $this->generateUrl('login_check'),
));
}
AuthBundle/フォーム/タイプ/UserType.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('username', 'text', array('label' => 'Login:'));
$builder->add('password', 'password', array('label' => 'Password:'));
}
AuthBundle/Resources/views/Default/login.html.twig
...
<form action="{{ action }}" method="POST">
{{ form_widget(form) }}
<input type="submit" value="Login" />
</form>
...
私のフォームは、ルートlogin_check
をターゲット(/auth/login_check
URL )として作成されます。
ファイアウォールはすべてのsecured_area
URL に一致する/auth/login_check
はずなので、その中にあるはずです。それでも、このエラーが発生し続けます。私は何を間違っていますか?