2

MySQL で ORM を使用して Symfony2 に FOSUserBundle をインストールしましたが、匿名ユーザーが登録ページを利用できるようにできませんでした。

私が行くなら

http://myapp.localhost/login

ログインフォームが表示されますが、次の場所に行くと:

http://myapp.localhost/register

ログインフォームにリダイレクトされます。

画面にログインしてからlogin画面に移動するとregister、登録フォームが表示されます。

ログを見ると、これは私が得たものです:

request.INFO: Matched route "fos_user_registration_register" 
(parameters: "_controller":
 "Symfony\Bundle\FrameworkBundle\Controller\RedirectController::urlRedirectAction",
   "path": "/register/",
   "permanent": "true",
   "scheme": "null",
   "httpPort": "80",
   "httpsPort": "443", "_route": "fos_user_registration_register") [] []

 request.INFO: Matched route "fos_user_registration_register" 
 (parameters: "_controller": 
 "FOS\UserBundle\Controller\RegistrationController::registerAction", 
 "_route": "fos_user_registration_register") [] []

  security.INFO: Populated SecurityContext with an anonymous Token [] []
  [2013-08-12 13:48:37] event.DEBUG: Notified event "kernel.exception" to listener "Symfony\Component\Security\Http\Firewall\ExceptionListener::onKernelException". [] []
  [2013-08-12 13:48:37] security.DEBUG: Access is denied (user is not fully authenticated) by "/usr/share/www/etsytracker/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/AccessListener.php" at line 73; redirecting to authentication entry point [] []

匿名のトークンを取得しているように見えますが、Symfony は完全に認証されていないと言って、ログイン ページに追い出します。

ここに私の security.yml ファイルがあります:

security:
acl:
   connection: default
encoders:
   FOS\UserBundle\Model\UserInterface: sha512

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

providers:
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
        logout: true
        anonymous: true

    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false

access_control:
    - { path: ^/register$,                roles: 'IS_AUTHENTICATED_ANONYMOUSLY' }
    - { path: ^/login$,                   roles: 'IS_AUTHENTICATED_ANONYMOUSLY' }
    - { path: ^/resetting$,               roles: 'IS_AUTHENTICATED_ANONYMOUSLY' }
    - { path: ^/,                         roles: 'ROLE_USER'  }
    - { path: ^/admin,                    roles: 'ROLE_ADMIN' }

およびFOSBundleに関する私のconfig.yml:

fos_user:
  db_driver: orm
  firewall_name: main
  user_class: TestBundle\MyTestBundle\Entity\Users
4

2 に答える 2

1

m0cが指摘したように。

私のconfig.ymlファイルでは、^/認証されたユーザーのみがパスにアクセスする必要があり、^login$パスではなくパスのみをホワイトリストに登録しました^/register$

^/そのパスの役割を削除して、この問題を解決しました。

于 2013-08-12T20:16:12.453 に答える