Symfony настроки безопасности в security.yml

Это заметка о изначальном состоянии настроек безопасности в 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/login
            pattern:  ^/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, удачки!

Оцени публикацию:
  • 9,37
Оценили человек: 9
Теги : Symfony, фаервол, security

Похожие статьи:

Справочники и учебники:


Комментарии посетителей:
  • Битая ссылка на странице: "http://yapro.ru/web-master/php/symfony-nastroki-bezopasnosti-v-security-yml.html"
    в строке:
    "Конечно первым делом советую несколько раз прочитать информацию про безопасность, я не шучу, лучше сразу почитать!"
    17 августа 2017, 05:38 коммент полезен : 0 # Алексей8
Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » PHP »