2015-04-09 2 views
0

ребята! Я пытаюсь настроить систему пользователя (FOSUserBundle) для своего приложения Symfony. Все прошло нормально, пока я не попытался разрешить доступ ко всему сайту и ограничил доступ к некоторым маршрутам, используя управление доступом в файле конфигурации безопасности.FOSUserBundle разрешает доступ ко всему сайту

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

access_control: 

    - { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/profile$, roles: ROLE_USER } 
    - { path: ^/admin$, roles: ROLE_ADMIN } 

Я попытался также

# - {путь:. ^/*, Роли: IS_AUTHENTICATED_ANONYMOUSLY} #

и когда я иду index page (/), он перенаправляет меня на страницу входа. Я хочу, чтобы индексная страница была видимой для всех посетителей не только для тех, кто вошёл в систему.

Просто не могу понять этот момент. Спасибо за ответы.

+0

Попробуйте удалить свое первое правило в access_control и изменение шаблона в основном брандмауэре на «/.*» –

+0

то же самое, он перенаправляет меня на странице входа в – kinemota

+0

попробовать с * только без точки или + -. {Пути : ^/*, роли: IS_AUTHENTICATED_ANONYMOUSLY} –

ответ

2

попробовать это:

access_control: 
    - { path: ^/profile$, roles: ROLE_USER } 
    - { path: ^/admin$, roles: ROLE_ADMIN } 
    - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
+0

ничего хорошего не происходит, она перенаправляет меня на страницу входа – kinemota

0

Ваша проблема может быть связана с попыткой определить роль как массив роли, но вы даете только одно значение:

- { path: ^/*, role: IS_AUTHENTICATED_ANONYMOUSLY } 
- { path: ^/profile$, role: ROLE_USER } 
- { path: ^/admin$, role: ROLE_ADMIN } 

для более ролей, которые нуждаются в []

+0

да, я пытался использовать «роль» вместо «ролей», она не дает положительного результата – kinemota

+0

также с помощью ^/*? –

+0

да, также с ^/* – kinemota

0

Я решил проблему. Извините за мою тупость, я блуждал в течение 2 дней, почему это происходит. Перенаправление было от контроллера. Моя ошибка, извините. Спасибо за ответы в любом случае.

public function startAction() 
{ 
    $user = $this->getUser(); 
    if ($user) { 
     return $this->render('HellfireCommonBundle:Index:index.html.twig', array('user' => $user)); 
    } else {  
     return $this->redirect($this->generateUrl('fos_user_security_login')); 
    } 
} 
Смежные вопросы