Symfony Framework Форма авторизации. Bundle security. Аутентификация tutorial 4

returnt

09.01.2015

startSymfony

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

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

  1. /**
  2. @Route(«/login», name=»_demo_login»)
  3. @Template()
  4. */
  5. public function loginAction()
  6. {
  7. if ($this->get(‘request’)->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
  8. $error = $this->get(‘request’)->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
  9. } else {
  10. $error = $this->get(‘request’)->getSession()->get(SecurityContext::AUTHENTICATION_ERROR);
  11. }
  12. return array(
  13. ‘last_username’ => $this->get(‘request’)->getSession()->get(SecurityContext::LAST_USERNAME),
  14. ‘error’       => $error,
  15. );
  16. }

Давайте разберём его построчно. В строке 1,2 приведена конструкция аннотаций, с ними мы познакомимся по мере работы с  frameworkom.

Строка 3 открывает конструкцию Action по сути куда мы, и будем обращаться при работе с формой. Строки 5-8 отлавливаю ошибки, которые могут возникнуть при попытке авторизовать пользователя.

Строка 10 представляет собой конструкцию возврата.

Как мы можем убедиться логики авторизации мы так и не увидели только лишь возможность отлавливания ошибок. С чем это связанно, с тем, что вся логика закрыта в SecurityBundle. А теперь я я предлагаю попытался написать свою небольшую форму входа со своей логикой для лучшего понимания работы Symfony.

Ещё хотелось бы ознакомить вас дорогие читатели с конфигурационным файлом настроек защиты Symfony.

  1. jms_security_extra:
  2. secure_all_services: false
  3. expressions: true
  1. security:
  2. encoders:
  3. Symfony\Component\Security\Core\User\User: plaintext
  1. role_hierarchy:
  2. ROLE_ADMIN: ROLE_USER
  3. ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
  1. providers:
  2. in_memory:
    1. memory:
    2. users:
      1. user: { password: userpass, roles: [ ‘ROLE_USER’ ] }
      2. admin: { password: adminpass, roles: [ ‘ROLE_ADMIN’ ] }

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