2013-09-11 6 views
1

Новый пользователь с Symfony2 здесь.Symfony2 - Брандмауэр с FOSUserBundle

Я пытаюсь настроить брандмауэр с помощью FOSUserBundle.

У меня есть все, что после того, как /админ/ необходим пользователю быть администратором.

Однако, я хочу, чтобы переместить путь входа в /админ/войти в вместо того, чтобы просто /Войти

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: ^admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^admin/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin/, role: ROLE_ADMIN } 

маршрутизации. yml

pwd_admin: 
    resource: "@PWDAdminBundle/Resources/config/routing.yml" 
    prefix: /admin 

pwd_website: 
    resource: "@PWDWebsiteBundle/Resources/config/routing.yml" 
    prefix: /

fos_js_routing: 
    resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml" 

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: /admin/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 

Я получаю следующее сообщение об ошибке при попытке посетить /администратор/вход

No route found for "GET /admin/login 

Редактировать: Маршруты

fos_user_security_login   ANY  ANY ANY /login 
fos_user_security_check   POST  ANY ANY /login_check 
fos_user_security_logout   ANY  ANY ANY /logout 
fos_user_profile_show    GET  ANY ANY /profile/ 
fos_user_profile_edit    ANY  ANY ANY /profile/edit 
fos_user_registration_register ANY  ANY ANY /admin/register/ 

ответ

2

Вы должны изменить свой security.yml как:

security: 
    firewalls: 
     main: 
      form_login: 
       login_path: /admin/login 
+0

Я все еще получаю Не найдено маршрутов для «GET/admin/login – ritch

+0

Можете ли вы сделать php app/console router: debug? – VBee

+0

добавлен в вопрос – ritch

3

У меня была такая же проблема, как и вы, и следующее решение помогло мне увидеть страницу входа.

Попробуйте добавить префикс к вашему fos_user_security маршруту

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

Надежда это помогло. Возможно, вы также получите некоторую проблему с доступом, к которой у меня пока нет решения, но, возможно, вы сможете найти решение самостоятельно. Удачи вам в этом, и, возможно, вы поделитесь с нами решением, что было бы здорово

Получайте удовольствие от кодирования.

+0

Да, нам нужны маршруты, определенные для'/admin/login', но мы нужно дублировать безопасность, чтобы иметь 'admin_security.xml', если у нас есть общедоступный, с разными идентификаторами маршрутов. –

+0

спасибо, у меня была такая же проблема, и я мог ее исправить. Я не определил маршруты. –

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