Это заметка о изначальном состоянии настроек безопасности в Symfony.
Конечно первым делом советую несколько раз прочитать информацию про безопасность, я не шучу, лучше сразу почитать!
Т.к. изначально ничего не понятно, о чем написано в файле app/config/security.yml, то я решил написать комментарии непосредственно в этом файле:
# важно:# - все комментарии должны начинаться с 1 символа# - все суб-настройки должны быть выстроены табами (или 4 пробела)# - верхний файервол всегда более приоритетней нижнегоsecurity:# здесь описывается чем проверять у пользователя пароль:encoders:Symfony\Component\Security\Core\User\User: plaintext# иерархия пользовательских ролейrole_hierarchy:# в данном случае у админской роли так же будет роль пользователяROLE_ADMIN: ROLE_USER# а здесь у нас наследование сразу нескольких ролейROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
# провайдеры - то, через что будет проходить запрос от посетителяproviders:# in_memory - просто название провайдера (можно написать windows_xp, потому что кроме как здесь нигде больше не значится)in_memory:# memory - стандартизированный Symfony-провайдер, означает что данные о пользователях будут записаны ниже обычным способомmemory:# пользователи и их роли (users - стандартизированая переменная)users:# в данном случае у нас 2 пользователя с разными ролями (которые присвоятся им в случае их успешной авторизации)user: { password: userpass, roles: [ 'ROLE_USER' ] }admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }# firewalls - правила согласно которым Symfony будет отслеживать URI и реагировать на них для проверки доступа к нимfirewalls:# dev - просто название фаервола (можно переименовать как Вам нравится)dev:pattern: ^/(_(profiler|wdt)|css|images|js)/security: false# login - просто название фаервола (можно переименовать как Вам нравится)login:# не смотря на то, что страницы начинающиеся /demo/secured/ у нас под паролем (см. ниже), мы разрешим просмотр страницы /demo/secured/loginpattern: ^/demo/secured/login$security: false# secured_area - просто название фаервола (можно переименовать как Вам нравится)secured_area:# ВНИМАНИЕ: т.к. в этом фаерволе НЕ указано security: false - значит проверкой пароля займется выше описанный security: encoders: Symfony\Component\Security\Core\User\User: plaintext# В строке ниже указываем роутинги, которые требуют авторизацииpattern: ^/demo/secured/form_login:# login_path - стандартизированный Symfony-параметр указывающий место (имя роутинга), где лежит форма авторизации. Роутинг _demo_login указан в /src/Acme/DemoBundle/Controller/SecuredController.php:25 Если туда заглянуть, то мы увидим урл /login Т.е. все работает так: пользователь обращается к странице /login, Symfony просматривает /app/config/routing_dev.yml, видит там, что нужно поискать в /src/Acme/DemoBundle/Controller/SecuredController.php и видит в нем урл /login который соответствует методу loginAction(). В этом же методе можно проверять валидацию полей формы авторизации.login_path: _demo_login# check_path - стандартизированный Symfony-параметр указывающий место (имя роутинга) который проверяет логин/пароль. В данном случае указано _security_check - имя роутинга, которое прописано в /src/Acme/DemoBundle/Controller/SecuredController.php:43 Если туда заглянуть, то мы увидим урл /login_check Т.е. все работает так: пользователь обращается к странице /login_check, Symfony просматривает /app/config/routing_dev.yml, видит там, что нужно поискать в /src/Acme/DemoBundle/Controller/SecuredController.php и видит в нем урл /login_check который соответствует методу securityCheckAction()check_path: _security_check# урл-адреса, для деавторизации пользователяlogout:# урл, где пользователь деавторизовываетсяpath: _demo_logout# урл, куда он попадает пользователь после успешной деавторизации ( если не указывать, то попадает на / )target: _demo#anonymous: ~#http_basic:# realm: "Secured Demo Area"access_control:- { path: ^/demo/secured/hello/admin/, roles: ROLE_ADMIN }#- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
как видно, не все так просто, но надеюсь кому-то это поможет понять принцип работы Symfony, удачки!
Комментарии
в строке:
"Конечно первым делом советую несколько раз прочитать информацию про безопасность, я не шучу, лучше сразу почитать!"