1

ログインページにアクセスしようとすると、Symfony2 Web サイトでログインしているユーザーを別のページにリダイレクトさせようとしています。

これは私のsecurity.ymlです:

security:
    encoders:
        Cocoa\LoginBundle\Entity\User: 
        algorithm:        sha512

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]

providers:
    administrators:
        entity: { class: CocoaLoginBundle:User, property: username }

firewalls:
    admin_area:
        pattern:    ^/administration
        form_login:
            login_path:  login
            check_path:  login_check
        logout:
            path:   /administration/logout
            invalidate_session: true
            target: /


access_control:
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY}
    - { path: ^/administration, roles: ROLE_ADMIN }

そして、これは私のコントローラーです:

class LoginController extends Controller {

  public function loginAction() {
    if (false === $this->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY')) {
      return $this->redirect($this->generateUrl('public_homepage'));
    }

    $request = $this->getRequest();
    $session = $request->getSession();

    if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
      $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
    } else {
      $error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
      $session->remove(SecurityContext::AUTHENTICATION_ERROR);
    }

    return $this->render('CocoaLoginBundle:Login:login.html.twig', array(
            'last_username' => $session->get(SecurityContext::LAST_USERNAME),
            'error' => $error));
  }

  public function loginCheckAction() {

  }

}

匿名ユーザーとしてログイン ページにアクセスすると、ログイン フォームが表示されます。しかし、ログインしてログイン ページをロードすると、500 サーバー エラーが発生します。

The security context contains no authentication token. One possible reason may be that there is no firewall configured for this URL. 

別のトピックで読んだ提案された修正は、ログイン ページをファイアウォールの背後に置くことです。私はそれをしましたが、それでもエラー500です。

私は何を間違っていますか?

ありがとう!

4

1 に答える 1