2012-04-27 2 views
1

Я создал пакет с именем «Пользователь». В общей маршрутизации я добавил/пользователь на каждый URL UserBundle. Так, например, когда я определяю маршрут/список в UserBundle, реальный путь равен http://myapp.loc/user/list.Безопасность в Symfony2

Я пытаюсь заставить пользователя войти в систему, чтобы использовать этот сайт, я это делаю:

security: 
     firewalls: 
      login_firewall: 
       pattern: ^/user/login 
       anonymous: ~ 
      secured_area: 
       pattern: ^/ 
       form_login: 
        login_path: user_login 
        check_path: user_login_check 
        default_target_path:/
       logout: 
        path: /user_logout 
        target: user_login 
       remember_me: 
        key:  atipics-soft2012 
        lifetime: 3600   
     access_control: 
      - { path: ^/, roles: ROLE_USER } 
     providers: 
      users: 
       entity: { class: MyApp\UserBundle\Entity\User, property:email } 
     encoders: 
      MyApp\UserBundle\Entity\User: { algorithm: sha512, iterations: 10 } 

Я получаю сообщение об ошибке, как это:

InvalidConfigurationException: Invalid конфигурация для пути «security.firewalls.secured_area»: check_path «user_login_check» для метода входа «form_login» не соответствует шаблону брандмауэра «^ /».

В чем может быть проблема?

Из этой картинки я добавил этот маршрут в файл маршрутов.

+0

Вам необходимо исключить страницу входа из вашего контроля доступа, поскольку в противном случае пользователь не может получить доступ к вашей странице входа без входа. Документация довольно хороша в материалах безопасности и должна вас вести. – Sgoettschkes

+0

Вы правы, но я уже попытался это сделать. Дело в том, чтобы защитить все приложение. Вы знаете какой-то метод? – Bernat

+0

попробуйте добавить '' - {путь: ^/user_login, роли: IS_AUTHENTICATED_ANONYMOUSLY} '' в ваш список access_controll. – Sgoettschkes

ответ

1

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

+0

OK. Я сделал, теперь код работает, 'couse я добавил эту строку: - {path: ^/user/*, role: ROLE_USER} в access_control. Дело в том, как я могу защитить с помощью ROLE_USER весь сайт? Это не работает - {путь: ^/*, роли: ROLE_USER} – Bernat

+0

'{путь:^/, ролей: ROLE_USER}' должен работать. –

+0

, похоже, работает до тех пор, пока я не войду в систему. Затем, когда я вхожу в правильный psw, он перенаправляет меня на/_wdt/4f9a7bc6ddc40 ... любую идею? : S – Bernat

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