2016-05-11 2 views
1

Я пытаюсь установить FOSUserBundle после урока: https://symfony.com/doc/master/bundles/FOSUserBundle/index.htmlНепризнанный вариант «csrf_token_generator» под «security.firewalls.main.form_login»

, но появляется сообщение об ошибке:

InvalidConfigurationException: Unrecognized options "csrf_token_generator" under "security.firewalls.main.form_login" 

Мой конфиг. YML импорта: - {ресурс: parameters.yml} - {ресурс: security.yml}

framework: 
    csrf_protection: 
     enabled: true 
    #esi:    ~ 
    #translator:  { fallback: "%locale%" } 
    secret:   "%secret%" 
    router: 
     resource: "%kernel.root_dir%/config/routing.yml" 
     strict_requirements: ~ 
    form:   ~ 
    csrf_protection: ~ 
    validation:  { enable_annotations: true } 
    templating: 
     engines: ['twig'] 
     #assets_version: SomeVersionScheme 
    default_locale: "%locale%" 
    trusted_hosts: ~ 
    trusted_proxies: ~ 
    session: 
     # handler_id set to null will use default session handler from php.ini 
     handler_id: ~ 
    fragments:  ~ 
    http_method_override: true 

fos_user: 
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel' 
    firewall_name: main 
    user_class: Utilisateurs\UtilisateursBundle\Entity\Utilisateurs 

# Twig Configuration 
twig: 
    debug:   "%kernel.debug%" 
    strict_variables: "%kernel.debug%" 

# Assetic Configuration 
assetic: 
    debug:   "%kernel.debug%" 
    use_controller: false 
    bundles:  [ ] 
    #java: /usr/bin/java 
    filters: 
     cssrewrite: ~ 
     #closure: 
     # jar: "%kernel.root_dir%/Resources/java/compiler.jar" 
     #yui_css: 
     # jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar" 

# Doctrine Configuration 
doctrine: 
    dbal: 
     driver: "%database_driver%" 
     host:  "%database_host%" 
     port:  "%database_port%" 
     dbname: "%database_name%" 
     user:  "%database_user%" 
     password: "%database_password%" 
     charset: UTF8 
     # if using pdo_sqlite as your database driver: 
     # 1. add the path in parameters.yml 
     #  e.g. database_path: "%kernel.root_dir%/data/data.db3" 
     # 2. Uncomment database_path in parameters.yml.dist 
     # 3. Uncomment next line: 
     #  path:  "%database_path%" 

    orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     auto_mapping: true 

# Swiftmailer Configuration 
swiftmailer: 
    transport: "%mailer_transport%" 
    host:  "%mailer_host%" 
    username: "%mailer_user%" 
    password: "%mailer_password%" 
    spool:  { type: memory } 

My security.yml

security: 
encoders: 
    FOS\UserBundle\Model\UserInterface: bcrypt 

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_token_generator: security.csrf.token_manager 
      # if you are using Symfony < 2.8, use the following config instead: 
      csrf_provider: form.csrf_provider 

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

    login: 
     pattern: ^/demo/secured/login$ 
     security: false 

    secured_area: 
     pattern: ^/demo/secured/ 
     form_login: 
      check_path: _security_check 
      login_path: _demo_login 
     logout: 
      path: _demo_logout 
      target: _demo 
     #anonymous: ~ 
     #http_basic: 
     # realm: "Secured Demo Area" 

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

enter code here 

Может кто-нибудь мне помочь?

ответ

2

Проблема в файле security.yml. Вы указали два менеджера токенов CSRF.

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
      csrf_token_generator: security.csrf.token_manager 
      # if you are using Symfony < 2.8, use the following config instead: 
      # csrf_provider: form.csrf_provider 

В зависимости от того, какая версия Symfony вы используете вы используете либо csrf_token_generator или csrf_provider, если ваша версия Symfony является < 2,8, но не оба.

Необходимо удалить или прокомментировать одну из строк.


Редактирование этого сообщения, потому что я не могу комментировать ваше новое сообщение.

My version symfony is 2.4 : "symfony/symfony": "2.4.*"

But i have these new error:

ServiceNotFoundException: You have requested a non-existent service "fos_user.doctrine_registry".

Это может быть связано с вашей версии Symfony быть < 2.6. * И противоречивыми с версией FOSUserBundle вы используете.

Для временной работы вокруг редактировать свои config.yml

services: 
    fos_user.doctrine_registry: 
     alias: doctrine 
     # or use this, unsure on which one for your version of Symfony 
     # alias: doctrine_mongodb 

Другие исправления можно с помощью частности тянуть (старую версию - не рекомендуется) в вашем composer.json. Это было протестировано для Symfony 2.6. * И в обход той же проблемы, что и вы.

"friendsofsymfony/user-bundle": "dev-master##6ccff96434c0ac7fee077d1dce90966341dfd278" 

Вы можете прочитать больше об этой конкретной проблеме: https://github.com/FriendsOfSymfony/FOSUserBundle/issues/2048

филиал Symfony существует как временное решение, а также: https://github.com/symfony/symfony/pull/17554

+1

спасибо очень Brendan –

Смежные вопросы