1

このエラーメッセージで 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_checkURL )として作成されます。

ファイアウォールはすべてのsecured_areaURL に一致する/auth/login_checkはずなので、その中にあるはずです。それでも、このエラーが発生し続けます。私は何を間違っていますか?

4

3 に答える 3

0

アプリ/構成/セキュリティ.yml

secured_area:
    pattern:    ^/
    form_login:
        login_path: login  #this is routing name
        check_path: login_check  #this is routing name
    logout:
        path:   logout #this is routing name
        target: /

編集

[1]これを削除してみてください:

auth_area:
    pattern:    ^/auth/(login|login_check)
    anonymous:  ~

[2]あなたのパスは次のことをより良くします:

 <form action="{{ path('login_check') }}" method="POST">

編集

ログイン例です

firewalls:
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false
    secured_area:
        pattern:    ^/
        anonymous: ~
        form_login:
            login_path:  login
            check_path:  login_check
            always_use_default_target_path: true
            default_target_path: /top
        logout:
            path:   /user_logout
            target: /
于 2013-08-05T13:37:31.063 に答える