Завершаем аутентификацию для бэкенда. Доделаем нюансы, не реализованные ранее.
Сначала добавим роль в JWT. Потом напишем генератор токенов для E2E тестов. И сделаем форсированное разлогинивание пользователя и автоочистку устаревших кодов из БД по Cron в Docker Swarm.
- 00:00:20 Постановка задачи
- 00:04:05 Добавление роли в JWT токен
- 00:10:10 Получение роли из модуля Auth
- 00:14:06 Извлечение роли из токена
- 00:23:42 Генерация токенов для E2E тестов
- 00:30:11 Рефакторинг генератора
- 00:35:01 Форсированное разлогинивание
- 00:36:27 Удаление устаревших кодов
- 00:38:54 Запуск по Cron в Docker Swarm
- 00:44:17 Переводы для HTTP-шаблонов
- 00:47:09 Перевод по фразам и ключам
- 00:52:58 Вынос папки валидатора
- 00:54:24 Обзор результата
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Спасибо!
Спасибо! :)
Добрый день, подскажите пожалуйста. С вчерашнего дня перестали собираться образы php-cli-alpine и php-fpm-alpine. Выдает ошибку
make: /bin/sh: Operation not permitted make: *** [Makefile:209: pdo_pgsql.lo] Error 127
Такая ошибка есть в обсуждении alpine но, как ее решить так и не понял. ubuntu - 20 docker - version 19.03.12, docker-compose version 1.26.2.
Подскажите как можно решить эту проблем ку.
Попробовал все пересобрать на Mac (Docker: v.20.10.7, Compose: v.2.0.0-b6) - полет норм.
Возможно не связано с вашей ошибкой, но сборка могла упасть из-за обновления :latest версии базового образа на docker hub, также на прошлой неделе наткнулся что старая версия образа была полностью удалена из реестра. Попробуйте собрать с другой версией базового образа.
Обновите Docker до версии 20.
Добрый вечер.
А как это правильно сделать?
Есть playbook upgrade, но после запуска версия docker не обновляется. ОС Debian 10
Проверьте имя дистрибутива в
/etc/apt/sources.list.d/docker.list
Должен быть
buster
, как мы сделали в следующем эпизоде.В upgrade.yml
В /etc/apt/sources.list.d/docker.list
Если в upgrade.yml заменить на buster?
Поменял в upgrade.yml, в файл docker.list добавилась строка
Но и старые строки остались. Это может вызвать конфликт в будущем?
Конфликта не будет. Но можно удалить.
Благодарю.
Добрый день, Дмитирий.
Не совсем понятно со сменой роли пользователя.
Как я понял, если админ меняет роль для пользователя, то пользователь какое-то время ещё пользуется старой ролью.
Почему в этом случае не разлогинивать пользователя принудительно?
Потому что без хождения в БД при валидации нет возможности разлогинить JWT принудительно.
Получается, что пока пользователь не обратиться к БД - ничего не будет?
В этом суть JWT вместо токенов в БД, что в JWT токену мы всегда верим на слово.
В принимающем коде мы в токене с
{user_id, role, expires, sign}
проверяем только подпись и срок. Если подпись сошлась срок не истёк, то токен рабочий.Поэтому у нас чисто физически нет способа "разлогинить" уже выданный конкретный JWT токен.
Добрый день.
Подскажите, как в api правильно оформить запрос к контроллеру, который отвечает за авторизацию через социальные сети?
И, если есть api контроллеры, но нет смысла оставлять старую web-авторизацию?
Можно через серию редиректов вроде:
То есть в API сделать контроллер, который редиректит на соцсеть. И с фронтенда редиректить на него вроде
api/authorize/fb?state=xyz
. Потом при возврате из соцсети на callback-контроллер в нём добавлять пользователя и уже как обычно редиректить с одноразовым кодом authorization_code обратно на фронтенд.Вопрос не совсем в тему.
Подскажите, в каком эпизоде Вы объясняете CORS заголовки для config ngix?
Я имею ввид это
Сами заголовки объясняю в отдельной серии по HTTP.
А в этих видео Вы нигде дополнительно не объясняете?
Просто добавляем их в 50-ом эпизоде.
Благодарю.
И ещё вопрос не в тему)
У меня проблема с functional тестами, при проверке api контроллера, регистрация. Тест не проходит, так как идёт отправка уведомления пользователю.
Как отключить в тестах отправку уведомлений?
Где-то, в Ваших видео, говорилось об этом, но никак не могу найти)
Не отключать, а просто отправлять письма в mailhog.
На локальном так и есть, тесты проходят.
Но при try-testing из всех именно этот тест отваливается.
Хотя в .env.test я определил env переменные для mail
Пока не совсем понял, как добавить пользователя и одноразовый код authorization?
Callback-контроллер нужно указать в настройках самого facebook?
В будущих эпизодах сделаем.
Да. В разделе разработчика у соцсети при добавлении oAuth приложения указываем обратный адрес для редиректа.
Эх...
Ну что же, будем ждать)
В demo-manager Вы тоже используете jwt токены или там чуть другой подход?
Для API там подключаем бандл trikoder/oauth2-bundle, который внутри использует этот же league/oauth2-server.
Получается, что это те же jwt токены?
Сам бандл устарел. Как я понимаю, можно взять пример работы с токенами в этом проекте и подключить к проекту demo-manager?
Да. Можно подсмотреть, как это было сделано в бандле.
Благодарю за подсказки.
Сейчас использую такой код для авторизации на сайте.
Как передать данные через api к этому действию я понимаю, но как теперь получить ответ, что пользователь авторизован или получить ошибки.
Код основан на Вашем примере из demo-manager.
я так понимаю валидацию формы входа не стали делать
Можно при желании добавить валидацию email. Если для регистрации валидация критична, то для входа это малополезно.
Или войти через: