После добавления полноценной генерации токенов пришла пора эти JWT-токены принимать и валидировать. И извлекать из них идентификатор пользователя для использования в контроллере.
Для этого создадим компонент сервера ресурсов. Добавим middleware для аутентификации и рассмотрим несколько вариантов его написания и использования:
- 00:01:11 Постановка задачи
- 00:04:54 Создание сервера ресурсов
- 00:05:21 Написание Authenticate Middleware
- 00:06:19 Контроллер вывода пользователя
- 00:07:32 Функциональный тест
- 00:09:24 Генерация токенов для тестов
- 00:11:31 Свой атрибут в запросе
- 00:12:26 Сложный Identity
- 00:14:04 Константа ATTRIBUTE
- 00:15:24 Хэлпер для получения пользователя
- 00:15:57 Проверка корректности идентификатора
- 00:18:05 Вынос хэлпера
- 00:19:50 Необязательная аутентификация
- 00:21:06 Строгая проверка в контроллере
- 00:21:47 Собственные HTTP-исключения
- 00:22:28 Глобальная защита приложения
- 00:23:22 Обзор результата
И в следующем эпизоде добавим в токен роль пользователя, генерацию токенов для E2E-тестов и организуем автоудаление устаревших кодов по Cron
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Спасибо!
Здравствуйте Дмитрий! Спасибо за вашу работу, очень познавательно. Подскажите пожалуйста (или в след видео упомяните), если например реализовывать административную панель, как можно было бы для разных ролей (три, четыре роли) реализовать список доступных разделов, модулей (ссылок для выполнения тех или иных действий, для каждой роли свой)? Как закрыть api понятно из видео, а вот как фронт реализовать хотелось бы тоже понимать. Спасибо!
Во фронтенде это лучше делать на основе информации с бэкенда. Например, список доступных операций можно вернуть вместе с даными в JSON-ответе из API. И на основе этого списка уже if-ами вывести только нужные кнопки.
Спасибо.
т.к у меня обычный сайт и апишка, хотелось бы в 2-х местах держать одну и туже авторизацию?
Можно для сайта записывать JWT-токен в Cookies. Но тогда надо будет подумать, как его обновлять при истечении.
Или войти через: