Видео с описанием алгоритма работы с 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 токенами.