Ответы пользователя по тегу Node.js
  • Как реализовать регистрацию в RESTful приложении?

    r0zh0k
    @r0zh0k
    Site Reliability Engineer
    Регистрация:
    POST /api/signup, в тело запроса передается емейл/логин и пароль + нужные вам пользовательские данные. Сторите это дело в базу, пароль конечно же хешируете bcryptом.

    Логин:
    POST /api/login, в тело запроса передается логин и пароль. Достаете пользователя из базы, хешируете пароль, сравниваете с сохраненным. Если не ок – 401 до свидания, если ок:

    Генерируете JWT токен, в токен записываете логин и роли, ставите дату протухания. Токен обязательно подписывается HS256 или сильнее.
    Токен ставите в респонс в хидер X-Auth-Token или возвращаете в респонсе или еще как угодно. Кроме этого возвращаете на фронт его роли чтобы фронт знал что надо рисовать.

    Фронтенд сохраняет токен в печенье или локалсторедж и передает с каждым запросом.

    На каждый запрос вы
    1. Смотрите есть ли токен в хидере. Если нет – 403.
    2. Валидируете его (обязательно ставите сами алгоритм подписи, а не берете из самого токена), и смотрите не протух ли. Если невалидный или протух – 403.
    3. Достаете оттуда емейл и роли. Смотрите, доступен ли ваш эндпоинт этим ролям. Если нет – 403.
    4. ...
    5. PROFIT!

    Время от времени токен надо рефрешить. Еще можно в токен напимер записывать ІР пользователя и кучу другой полезной информации.

    Ключевые слова для гугления – JWT auth, даже не знаю что еще добавить.
    Ответ написан
    7 комментариев
  • Как посмотреть логи Docker?

    r0zh0k
    @r0zh0k
    Site Reliability Engineer
    AWS не пересобирает образ, AWS рестартует контейнер если тот завершился.
    Ваш контейнер скорее всего писал логи в stdout.
    Зайдите на инстанс по SSH, затем сделайте docker ps -a, там можно будет увидеть только что завершенный контейнер. Раньше AWS их оставлял, но сейчас, в связи с обновлением ECS-агента, судя по всему, он их подчищает, поэтому свой контейнер вы можете не увидеть.
    Если же старый контейнер еще остался то все равно можно посмотреть его логи – docker logs <container_id>

    Тем не менее, желательно прикрутить внешний сервис логирования, например LogEntries, Papertrail или другие подобные системы.
    Ответ написан
    Комментировать