Видео с описанием алгоритма работы с API токен аутентификацией здесь
Создание сущности для хранения токенов
Итак, давайте приступим к практике создания аутентификации с помощью API токенов. Первым делом нам потребуется создать базу данных, в данном случае таблицу, в которой будут храниться наши токены пользователей, которые будут у нас аутентифицироваться. Она должна содержать следующие поля: логин пользователя, token, expire, roles.
Давайте специально для этого создадим отдельную сущность, в которой будет храниться эта информация. Для этого используем команду
php bin/console make:entity
и имя сущности можно назвать `Token`. Должна ли она быть доступна по API? Здесь нужно оставить значение по умолчанию "нет", потому что по API мы к ней обращаться не будем.
Добавляем поля для сущности Token
Теперь нужно создавать поля для этой сущности.
Первое поле, которое здесь у нас будет, это поле пользователя. Мы создадим ссылку на сущность `User`, которая есть у нас в проекте. Наша сущность, потому что у нас есть аутентификация на сайте, в нашем проекте пользователи.
Соответственно, мы указываем тип этого поля `ManyToOne` и имя сущности `User`. Тип связи "у каждого токена есть один пользователь, и каждый пользователь может иметь много токенов". Как правило, здесь ставят значение `ManyToOne`, но вы можете поставить `OneToOne`, если у одного пользователя может быть только один токен. Здесь оставляем значение по умолчанию.
Следующее поле, которое нам потребуется, это поле, которое будет хранить время жизни нашего токена. И здесь используем тип `datetime`. Может ли она быть null? Давайте поставим "нет".
Следующее поле - это сам токен, значение токена, то есть та случайная строка, которая будет сгенерирована нашими скриптами. И здесь можно оставить значение `string`, пусть хранится строковое значение.
Ну и давайте добавим поле, которое будет содержать те роли, которые будут связаны с этим токеном. Это нужно для того, чтобы более гибко настраивать возможности токена. Поэтому у нас выбирается механизм, что можно пользователю генерировать много токенов, у каждого токена будут какие-то свои роли. Давайте создадим поле `roles` типа `string`, длиной 255.
Выполняем миграцию
Ну собственно говоря, сделаем миграцию, чтобы у нас в базе данных создавалась эта самая таблица. Выполним команду
php bin/console doctrine:migrations:migrate
Ну и всё, собственно, миграция прошла успешно, в базе данных создана новая таблица, в которой будут храниться токены пользователей. Ну и пока на этом завершим, в следующем видео продолжим настройку работы с API токенами.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Email - зарегистрироваться / войти