Реализовать безопасную аутентификацию пользователя в Yii2

  1. Создать новый проект
  2. Установите Yii2-пользователя
  3. Создание базы данных и миграция
  4. Настройка SMTP Mailer
  5. Включить симпатичный URL
  6. Настройте параметры электронной почты
  7. Протестируйте приложение
  8. Заключение
  9. Сакиб Ризван
  10. Запускайте PHP-сайты, не беспокоясь об управлении сервером.
Время чтения: 5 минут

Аутентификация пользователя является важным компонентом каждого веб-приложения. Будь то простой список дел или сложный корпоративный портал, аутентификация пользователей остается общим фактором для всех типов приложений PHP.

В этом руководстве я покажу вам, как разработать компонент аутентификации пользователей в Yii2, который поддерживает проверку электронной почты SMTP. Если вы новичок в Yii2, вы должны сначала прочитать предыдущие уроки, чтобы получить введение в Yii2 , Далее читайте о обработка форм в Yii 2 а также Управление базой данных в Yii 2.

Шаблон приложения Yii2 предлагает несколько способов регистрации пользователей. Однако эти методы по умолчанию не очень полезны, так как они зависят от жестко закодированных значений. По практическим соображениям эта система должна использовать базу данных для хранения пользовательской информации и защищать пароли с помощью хэштегов.

Другой способ реализации аутентификации пользователей в Yii2 - использование сторонних расширений. В этом уроке я буду использовать Дмитрий Ерофеев Расширение Yii2-User , Для получения дополнительной информации об этом расширении, вы можете прочитать документация расширения ,

Создать новый проект

Я начну с создания базового проекта Yii2 с использованием Composer:

composer create-project --prefer-dist yiisoft / yii2-app-basic newuser

Теперь, когда проект создан, я установлю расширение.

Установите Yii2-пользователя

Я буду следовать руководству по установке из официальной документации расширения.

Перейдите в папку проекта и выполните следующую команду Composer:

композитор требует dektrium / yii2-пользователь

Далее я установлю несколько конфигураций. Для этого откройте ` config / web.php` и добавьте следующие строки:

'modules' => ['user' => ['class' => 'dektrium \ user \ Module',],],

Создание базы данных и миграция

Далее создайте базу данных с именем ` newuser` . Для этого перейдите в ` config / db.php` и установите базу данных (см. Следующий снимок экрана:

Следующий шаг - миграция базы данных. Для этого используйте следующую команду composer:

php yii migrate / up --migrationPath = @ vendor / dektrium / yii2-user / migrations

После успешной миграции ваша база данных готова к использованию для аутентификации пользователя.

Настройка SMTP Mailer

Следующим шагом является настройка почтовой программы SMTP. Этот почтовик отправит письма с подтверждением.

Для этой настройки откройте Config / web.php и найдите следующий фрагмент кода:

'mailer' => ['class' => 'yii \ swiftmailer \ Mailer', // отправлять все письма в файл по умолчанию. Вы должны установить // 'useFileTransport' в false и настроить транспорт // для почтовой программы, чтобы отправлять реальные электронные письма. 'useFileTransport' => true,],

Найдя фрагмент, замените его следующим фрагментом кода:

'mailer' => ['class' => 'yii \ swiftmailer \ Mailer', 'viewPath' => '@ app / mailer', 'useFileTransport' => false, 'transport' => ['class' => ' Swift_SmtpTransport ',' host '=>' your-host-domain например smtp.gmail.com ',' username '=>' your-email-or-username ',' password '=>' your-password ',' port '=>' 587 ',' encryption '=>' tls ',],],

Как видите, вам нужно предоставить несколько сведений, включая SMTP-хост, действительный адрес электронной почты и пароль. Обратитесь к следующему снимку экрана, чтобы проверить размещение фрагмента:

На этом этапе все готово, и все, что требуется, - это ссылки для доступа к страницам входа и регистрации. Сейчас я изменю основной файл макета.

Перейдите в ` Views / layouts / main.php` и найдите следующий фрагмент кода:

echo Nav :: widget (['options' => ['class' => 'navbar-nav navbar-right'], 'items' => [['label' => 'Home', 'url' => [ '/ site / index']], ['label' => 'Status', 'url' => ['/ status / index']], ['label' => 'About', 'url' => [ '/ site / about']], ['label' => 'Contact', 'url' => ['/ site / contact']], Yii :: $ app-> user-> isGuest? ['label' => 'Login', 'url' => ['/ site / login']]: ['label' => 'Выход из системы ('. Yii :: $ app-> user-> identity-> username. ')' , 'url' => ['/ site / logout'], 'linkOptions' => ['data-method' => 'post']],],]);

Замените этот фрагмент следующим определением массива:

$ navItems = [['label' => 'Home', 'url' => ['/ site / index']], ['label' => 'Status', 'url' => ['/ status / index ']], [' label '=>' About ',' url '=> [' / site / about ']], [' label '=>' Contact ',' url '=> [' / site / contact ']]]; if (Yii :: $ app-> user-> isGuest) {array_push ($ navItems, ['label' => 'Sign In', 'url' => ['/ user / login']], ['label' => 'Зарегистрироваться', 'url' => ['/ user / register']]); } else {array_push ($ navItems, ['label' => 'Logout ('. Yii :: $ app-> user-> identity-> username. ')', 'url' => ['/ site / logout' ], 'linkOptions' => ['data-method' => 'post']]); } echo Nav :: widget (['options' => ['class' => 'navbar-nav navbar-right'], 'items' => $ navItems,]);

Включить симпатичный URL

Теперь, чтобы эти ссылки работали, я включу красивый URL. Красивые URL - это более чистый формат URL, который легче найти. Например, структура URL-адреса страницы «О программе» может быть следующей: http: //localhost/newuser/web/index.php? R = site / about . Версия этого URL-адреса в виде симпатичной ссылки будет выглядеть следующим образом: http: // localhost / newuser / web / site / about .

Для этого перейдите в ` Config / web.php` и добавьте следующий код в компоненты.

'urlManager' => ['showScriptName' => false, 'enablePrettyUrl' => true],

Теперь откройте веб- папку и создайте новый файл с именем .htaccess. Откройте этот файл и добавьте в него следующий код:

RewriteEngine на # Если каталог или файл существует, используйте его напрямую. RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D # В противном случае перенаправьте его в index.php RewriteRule. index.php

Настройте параметры электронной почты

Примечание. Gmail является поставщиком электронной почты по умолчанию для этого примера.

Войдите в Gmail, используя учетные данные, указанные в приведенном выше коде.

Перейти в настройки >> Переадресация и POP / IMAP и включите доступ IMAP.

Протестируйте приложение

Приложение готово к тестированию. Запустите приложение в браузере и загрузите страницу регистрации.

Заполните форму и нажмите Зарегистрироваться . Письмо с подтверждением будет также отправлено на адрес электронной почты, который вы указали при регистрации.

Наконец, перейдите к Разблокировать Google Captcha и включи его. Теперь перезагрузите страницу регистрации, заполните форму и завершите процесс регистрации.

Заключение

В этом руководстве я описал, как вы можете настроить систему аутентификации пользователей в Yii2. Я также добавил подтверждение электронной почты и хеширование пароля в качестве дополнительных мер безопасности. Если у вас есть вопросы или вы хотите внести свой вклад в обсуждение, оставьте комментарий ниже.

Сакиб Ризван

Saquib - эксперт сообщества PHP в Cloudways - Управляемый PHP хостинг Облачная платформа. Он хорошо разбирается в PHP и регулярно участвует в проектах с открытым исходным кодом. Для удовольствия он любит играть, смотреть фильмы и гулять с друзьями. Вы можете отправить ему электронное письмо на [email protected]

Запускайте PHP-сайты, не беспокоясь об управлении сервером.

Предварительно установленный оптимизированный стек с Git, Composer и SSH