Аутентификация для контроллеров

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

Для этого создадим компонент сервера ресурсов. Добавим middleware для аутентификации и рассмотрим несколько вариантов его написания и использования:

  • 00:01:12 - Постановка задачи
  • 00:04:54 - Создание сервера ресурсов
  • 00:05:23 - Написание Authenticate Middleware
  • 00:06:21 - Контроллер вывода пользователя
  • 00:07:35 - Функциональный тест
  • 00:09:27 - Генерация токенов для тестов
  • 00:11:39 - Свой атрибут в запросе
  • 00:12:35 - Сложный Identity
  • 00:14:13 - Константа ATTRIBUTE
  • 00:15:36 - Хэлпер для получения пользователя
  • 00:16:09 - Проверка корректности идентификатора
  • 00:18:17 - Вынос хэлпера
  • 00:20:07 - Необязательная аутентификация
  • 00:21:25 - Строгая проверка в контроллере
  • 00:22:05 - Собственные HTTP-исключения
  • 00:22:47 - Глобальная защита приложения
  • 00:23:46 - Обзор результата

И в следующем эпизоде добавим в токен роль пользователя, генерацию токенов для E2E-тестов и организуем автоудаление устаревших кодов по Cron

Скрытый контент
Комментарии (4)
Руслан

Спасибо!

Ответить
Влад

Здравствуйте Дмитрий! Спасибо за вашу работу, очень познавательно. Подскажите пожалуйста (или в след видео упомяните), если например реализовывать административную панель, как можно было бы для разных ролей (три, четыре роли) реализовать список доступных разделов, модулей (ссылок для выполнения тех или иных действий, для каждой роли свой)? Как закрыть api понятно из видео, а вот как фронт реализовать хотелось бы тоже понимать. Спасибо!

Ответить
Дмитрий Елисеев

Во фронтенде это лучше делать на основе информации с бэкенда. Например, список доступных операций можно вернуть вместе с даными в JSON-ответе из API. И на основе этого списка уже if-ами вывести только нужные кнопки.

Ответить
Arunas

Спасибо.

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Google
GitHub
Yandex
MailRu