1 of 17

Yii2

Аутентифікація

2 of 17

Аутентифікація – це процес перевірки справжнього користувача

Для аутентифікації використовується:

  1. Ідентифікатор користувача (логін, email)
  2. Секретний токен (пароль, ключ доступа)

Аутентифікація реалізується формою входу.

3 of 17

Для здійснення аутентифікації необхідно

  • Налаштувати компонент додатку user
  • Створити клас, що реалізує інтерфейс yii\web\IdentityInterface

4 of 17

Налаштування yii\web\User

  • Для компонента user призначено клас app\models\User, який реалізує логіку аутентифікації

5 of 17

Клас User, визначений як identity class, повинен реалізувати IdentityInterface з такими методами

  • findIdentity(). Знаходить екземпляр User по ID користувача. Використовується, коли необхідно підтримувати стан аутентифікації через сесії.
  • findIdentityByAccessToken(). Знаходить екземпляр User по токену доступа. Використовується, коли потрібно ідентифікувати користувача лише по секретному токену (наприклад, в RESTful додатках, що не зберігають стан в сесіях).
  • getId(). Повертає ID користувача, що надається екземпляром User
  • getAuthKey(). Повертає ключ аутентифікації, що зберігається в cookie. Ключ порівнюється з версією, що знаходиться на сервері.
  • validateAuthKey(). Перевіряє ключ cookie-аутентифікації.

6 of 17

Приклад реалізації класу User (ActiveRecord) з IdentityInterface

7 of 17

Оголошення

8 of 17

Отримання користувача по ID

9 of 17

Отримання користувача по секретному токену

  • Даний метод не реалізований в стандартних шаблонах Yii

10 of 17

Повертає ID користувача, що надається екземпляром User

11 of 17

Повертає ключ аутентифікації, що зберігається в cookie.

12 of 17

Перевіряє ключ cookie-аутентифікації

13 of 17

Непотрібні методи можна реалізовувати з порожнім тілом

  • Для RESTful додатків можна реалізувати лише findIdentityByAccessToken() та getId()
  • Для аутентифікації, що базується на cookie, достатньо реалізувати getAuthKey() та validateAuthKey()

14 of 17

Логування та вихід користувача

  • Логування
  • Вихід

15 of 17

Використання User

  • Для отримання identity поточного користувача (Null, якщо не аутентифікований):
  • ID поточного користувача (Null, якщо користувач не аутентифікований):
  • Перевірка:

16 of 17

Приклад роботи моделі LoginForm

17 of 17

Завдання

  • В клієнтській частині сайту створити сторінку перегляду даних про авторизованого користувача