Cookie авторизация

Закрываем dev версию сайта от посторонних глаз

В прошлой статье:

я рассказывал как сделать простую авторизацию по кукисам для того, чтобы закрыть хост от посторонних глаз.

UPD #1

Я исправил уже, но сначала я указывал код редиректа 301. Нужно отдавать 302. Если ваш клиент/заказчик/etc хотя бы раз зайдет без авторизации, то браузер может очень жестко закешировать ответ и потом его сбросить будет не легко (особенно на чужом компьютере, к которому нет доступа). Например Safari у нашего продакта так сильно закешировал ответ, что мне стоило прям усилий заставить его снова видеть сайт, даже когда я отключил авторизацию.

UPD #2

Если вы пользуетесь сервисом Cloudflare то, как вариант, можно сделать авторизацию по такому же типу, но через воркеры.

Воркеры — это аналог лямбд. Эдакий серверлесс подход. Вы можете обрабатывать входящий и исходящие запросы и модифицировать их по своему усмотрению. Воркеры пишутся на новомодном JS (ES6+, async/await и прочие плюхи).

Код Cloudflare Worker’а для авторизации по кукисам:

Суть проста и похожа: если нет нужной куки, просто говорим что доступа нет. Чтобы открыть сайт, формируем URL вида:

Воркер проверяет этот запрос и в ответ выдает HTML страницу, в которой через JS выставляем куку в браузер. После чего снова редиректим на главную, но так как у нас уже открыт доступ к сайту (есть нужная кука), то воркер просто перенаправляет запрос к серверу без модификаций.

Воркер можно включить на все поддомены используя маски:

Ну вот и все. Удобно, просто, быстро.

Так как это реверс прокси с возможностью писать полноценные обработчики, то можно сделать сложную авторизацию, авторизацию по базе пользователей и так далее. Вы, почти что, не ограничены в реализации и можете навернуть любую логику. Конечно с приходом ngScript в Nginx можно такое же повторить и в Nginx, но тут, считайте, полноценный “Node.js” аналог. Вы можете ходить по рестапи за данными, можете логировать проходящие запросы, отдавать несуществующие страницы, сгенерированные специально для конкретного запроса (например чтобы подтвердить права на сайт через файл, при этом не залезая на сам сервер). Очень мощный инструмент.


Лайк, хлопок, шер. Подписывайтесь на Телеграм канал. Следить за обновлениями и прочими материалами от меня можно именно там: @prowebit . В этом канале публикую различные новости и мысли, которых может не быть в этом блоге. Подписывайтесь!

𝔾𝕖𝕖𝕜 🄹🄾🄱 — анонимный поиск работы без палева где можно найти новую работу без проблем на текущем месте. Только для IT, никакого “левого” стафа. Только релевантные предложения. Скоро будет мега апдейт ;)

New.HR — место где помогают найти работу мечты. Работаем только с отборными вакансиями в сфере IT & Digital. Помогаем кандидатам найти работу по душе. Работаем с кандидатами, которые не ищут работу!

Александр Майоров / Alexander Mayorov — ProWEBIT

Written by

Активист программного комитета FrontendConf. CTO and co-founder at New.HR & 𝔾𝕖𝕖𝕜🄹🄾🄱.ru