1

https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.mdに記載されているように、FOS バンドルをインストールしました 。

composer を使用してインストールし、ユーザー クラスを設定すると、次のようになります。

[Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException]
 The service "fos_user.security.login_manager" has a dependency on a non-exi
 stent service "security.context".

パスの存在を確認したところ、fosuserbundle に含まれている contextinterface があります... コンソールを使用すると、常に同じエラーで中止されます。誰?

appKernel でバンドルを有効にしました (セキュリティ バンドルも有効になっています)。

        ...
        new Symfony\Bundle\SecurityBundle\SecurityBundle(),
        ...
        new FOS\UserBundle\FOSUserBundle(),
        ...

config.yml に構成を追加しました。

# fos UserBundle config
fos_user:
    db_driver: orm
    firewall_name: main
    user_class: SDDB\MainBundle\Entity\User

routing.yml を拡張しました。

# USER AUTH STUFF

fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"

fos_user_profile:
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
    prefix: /profile

fos_user_register:
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
    prefix: /register

fos_user_resetting:
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
    prefix: /resetting

fos_user_change_password:
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
    prefix: /profile

および security.yml:

security:
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

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
4

3 に答える 3

2

OK、FOS Bundle の開発者の助けを借りて解決策を見つけました。

同様の問題がある場合は、いくつかの基本的なことを行ってください。

  1. FOS Bundle のバージョンは Symfony のバージョンに適していますか?
  2. セキュリティバンドルは適切にインストールされていますか?
  3. appkernel でアクティブ化されていますか?
  4. そのための構成ファイル (security.yml) はありますか?
  5. (main)config.yml に適切に含まれていますか?

ポイント (4) のインクルード行にばかげたタイプミスがありました...

于 2013-08-09T09:30:06.310 に答える
1

:
- { resource: security.yml } をメインの config.yml の import セクションに追加すると、問題が解決しました

于 2015-03-24T15:16:16.073 に答える
0
  1. サービス ファイルが存在するかどうかを確認します (SecurityBundle\Resources\config\security.xml)。
  2. サービス ファイルが読み込まれているかどうかを確認します (SecurityBundle\DependencyInjection\SecurityExtension.php)。
于 2013-08-08T14:15:56.427 に答える