Pull to refresh
-3
0
Send message

Node.js: шаблон сервера для аутентификации и авторизации

Reading time11 min
Views35K


Привет, друзья!


На досуге разработал шаблон Node.js-сервера для аутентификации/авторизации, которым хочу с вами поделиться. Надеюсь, кому-нибудь пригодится.


Обратите внимание: шаблон — это всего лишь хорошая отправная точка, с которой можно начать разработку собственного сервиса. Он не предназначен для использования в продакшне как есть, поскольку настройки, определяющие гибкость его архитектуры и уровень его безопасности, зависят от потребностей конкретного приложения и должны быть реализованы вручную.


Также обратите внимание, что в коде имеется несколько console.log для облегчения процесса разработки приложения. В продакшне они не нужны. В производственном режиме также не следует возвращать столь информативные message.


Если возможностей, реализованных в шаблоне, окажется недостаточно, вот парочка более продвинутых инструментов:


  • oidc-client — разработчик отказался от дальнейшей поддержки, новый мейнтейнер пока не нашелся
  • oidc-provider — рекомендация моих более опытных коллег

Если вас интересует полноценная платформа для аутентификации/авторизации "из коробки", рассмотрите возможность использования Auth0.


Репозиторий


Сервер реализован с помощью Express.js


В качестве базы данных используется MongoDB Atlas

Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments4

Новые музыкальные инструменты — кто их делает и кто на них играет

Reading time3 min
Views7.6K

Мы часто рассказываем об олдскульных синтезаторах и устройствах аудиозаписи. Например, мы говорили о траутониуме, телеграфоне и терменвоксе.

Сегодня продолжим тему, но обсудим новинки, которые проектируют наши современники. Это — орган из подручных материалов, электромагнитная арфа и «синестетическая машина». Под катом — немного о каждом из инструментов.

Читать далее
Total votes 7: ↑6 and ↓1+6
Comments4

Как правильно верстать 2, или зачем я написал еще одну UI-библиотеку, мой первый npm-модуль?

Reading time26 min
Views11K

Это работа является логическим продолжением моего первого подробного текста для сообщества об актуальных подходах к верстке Как верстать веб-интерфейсы быстро, качественно и интересно. Но, если в первом трактате, внимание уделялось, прежде всего, стилю кода, его качеству и эффектным современным возможностям различных препроцессоров и фреймворков, что демонстрировалось на некоторых конкретных специфических задачах, теперь хочется сфокусироваться на архитектурных или даже организационных аспектах веб-производства. Если вы не читали мой первый текст, но собираетесь при этом прочесть этот — не поленитесь перейти по ссылке и пробежать глазами самые последние разделы каждой из двух частей первого пособия: «Готовые решения» и «Песочницы». Этот текст начинает прямо с этих мест и развивает именно эти идеи: и о пагубности применения раскрученных-популярных «на все готовых» UI-«дизайн-систем»-фреймворков для создания кастомизированных веб-морд любой сложности и, о, по сути, полезности использования хотя бы минимального документирования и явных соглашений при разработке веб-GUI на фронтенде. Но я не стану тратить время, доказывая, что «ни в коем случае нельзя использовать Vuetify или AntDesign» для создания крупных UI-систем с полностью кастомным оформлением. Вам не нужно прикручивать себе огромный геморрой непроницаемый слой плохо кастомизируемого готового GUI для того чтобы написать кнопку или поле ввода! Если вам нужен датапикер — найдите и допилите что-нибудь под себя. Это понимание может только прийти или так и не придти с годами тяжелого опыта, когда вы будете постоянно тратить непростительно много своего времени на то, чтобы написать очевидно отвратительный CSS — «кряки с !important`ами поверх стилей библиотеки», выдумывать чудные костыли на javascript чтобы изменить дефолтное поведение виджетов на кастомное и хитрое-нестандартное затребованное вашими дизайнерами... И при этом ваши шаблоны, стили и js-обвязки будут превращаться во все менее читаемые запутанные нагромождения разнообразно оформленного кода, с различным подходом к наименованию и прочими бедами… Этот текст и написанный для него проект призваны наглядно показать «а как надо?».

Читать далее
Total votes 7: ↑4 and ↓3+3
Comments15

Frontend Security: о чем вы хотели бы забыть, но не сможете

Reading time15 min
Views29K

Какие атаки на клиентскую часть веб-ресурсов вы знаете? XSS, CSRF, HTTP Response Splitting, Clickjacking, CSHM, атаки на CORS, следствия других ошибок программистов? В среднем разработчик вспоминает не половину, и даже не треть. Разнообразие атак зависит только от фантазии и любопытства злоумышленников, и все они созданы, чтобы навредить вашим клиентам, а значит — и вам.

Татьяна Новикова — ex-пентестер с опытом в безопасности около четырех лет, а ныне Application Security Engineer. В команде ЦАРКА (Центр анализа и расследования кибератак) она занималась пентестом — полной проверкой веб-ресурсов  на безопасность. В том числе команда работала с white-box, то есть с исходными кодами, и разбирала безопасность не только бэкенда, но и фронтенда. Сейчас Татьяна перешла в Beeline Казахстан и занимается обеспечением процессов безопасной разработки.

На основе своего опыта она выступила на конференции Frontend Conf Live 2020. В одной статье, конечно, невозможно покрыть все уязвимости и потенциальные опасности, поэтому сегодня будет самое актуальное и страшное из доклада — то, что может нанести максимальный ущерб.

Читать далее
Total votes 28: ↑28 and ↓0+28
Comments7

Вся правда о когнитивных искажениях

Reading time9 min
Views61K
Всё чаще на Хабре можно встретить выражения типа «типичная ошибка выжившего» или «эффект Даннинга-Крюгера в действии». Предполагается, что авторы таких высказываний достаточно компетентны, чтобы позволять себе подобного рода суждения. Но так ли это? В этой статье мы попробуем копнуть парочку когнитивных искажений чуть глубже, чем они рассматриваются в википедии.

узнать всю правду
Total votes 129: ↑116 and ↓13+133
Comments146

Я нашел 18K+ игр в NVIDIA GeForce NOW

Reading time4 min
Views92K

Я, как и многие пользователи NVIDIA GeForce NOW, жду пока там добавят те игры, в которые действительно хотелось бы поиграть. Но бывало и наоборот, игры которые уже были добавлены, позже внезапно удаляли из GFN сервиса. В моем случае я хотел там пройти игры Mafia, и потом их все убрали.

Спустя время, их так и не вернули. И я решил попытаться разблокировать запретные игры NVIDIA GeForce NOW сервиса. Но нашел там то, что никак не ожидал увидеть.

Читать далее
Total votes 146: ↑142 and ↓4+194
Comments72

Создаем Конечный Автомат на PHP

Reading time6 min
Views13K

Конечный Автомат (State Machine), также называемый Automata (да, как и игра), - это концепция для разработки, организации рабочих и технологических процессов с учетом текущего «состояния» какой-то задачи, изменения её состояний и, по возможности, для автоматизации процесса.

Я объясню на примере. Предположим, что я хочу купить молоко, тогда в такая задача будет иметь примерно следующие состояния...

Читать далее
Total votes 15: ↑11 and ↓4+9
Comments11

Создаем свой сайт или блог на Ghost в образе Docker

Reading time3 min
Views9.2K

Ghost — платформа для блогов с открытым исходным кодом, опубликованный под лицензией MIT. Ghost создавался как альтернатива WordPress, выросшего из движка для блога в сложную CMS. 

Фишкой Ghost является то, что он использует на стороне бекенда сервер Node.js и язык JavaScript и дает альтернативный вариант для разработки.

В этом посте объясняется, как задеплоить свой личный блог на Ghost — движке с базой данных MariaDB с помощью docker.

Читать далее
Total votes 6: ↑2 and ↓4-2
Comments5

Трюки CSS, которые сделают из вас ниндзя верстки

Reading time5 min
Views51K

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


Многие свойства, о которых пойдет речь, являются экспериментальными. Большинство из них поддерживаются всеми современными браузерами, однако, если вы решите использовать какое-либо из названных свойств в продакшне, не поленитесь зайти на Can I use и уточнить поддержку (недавно сильно расстроился, обнаружив, что Safari не поддерживает атрибут loading="lazy").


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


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


Итак, вы готовы к нашему небольшому путешествию в удивительный и почти безграничный мир CSS? Тогда вперед.


grid + place-items


Здесь вы найдете полное визуальное руководство по Grid и Flexbox.


Данная техника позволяет выравнивать элементы по горизонтали и вертикали при помощи всего лишь двух строк кода.

Total votes 28: ↑26 and ↓2+33
Comments8

10 лет аварии на АЭС Фукусима. Последствия и итоги

Reading time14 min
Views105K

11 марта 2011 года у восточного побережья Японии произошло крупнейшее в истории страны Великое восточно-японское землетрясение и вызванное им цунами. В результате погибло и пропало без вести почти 20 тысяч человек, было разрушено около миллиона домов, около полумиллиона человек были вынуждены эвакуироваться.

Но для многих главным событием тех дней стала авария на АЭС Фукусима-Дайчи, крупнейшая авария на атомной станции после Чернобыльской катастрофы. Как физик-ядерщик я наблюдал за событиями тех дней, переживая за людей в Японии и коллег по отрасли на станции. Многое за эти годы написано о причинах аварии. Но в своей статье я хочу рассказать о некоторых заблуждениях, связанных с последствиями аварии – для людей, окружающей среды и мировой атомной отрасли. И о том что сделано за эти 10 лет.

Фото на заставке: www.japantimes.co.jp

Читать далее
Total votes 80: ↑79 and ↓1+109
Comments131

Шейдеры, Three.js и киберпанк. Как мы делали лендинг в неоново-античной стилистике

Reading time6 min
Views20K

Привет, это блог «Технократии». Обычно мы занимаемся цифровой трансформацией бизнеса, но сегодня у нас для вас история, как при помощи библиотеки three.js и шейдеров мы сделали лендинг для нашей промо-кампании. Главный рассказчик — разработчик Артем Ибатуллин.

Читать далее
Total votes 11: ↑9 and ↓2+9
Comments11

IT в «лихие 90е» — из воспоминаний бумера

Reading time6 min
Views34K

Карьера ITшника в "лихие 90е" и первые заработанные деньги. Марс и Сникерс, видеомагнитофон, первая машина, Btrieve, NLM модули, ERP для фирмы, собранная на коленке и отлаживаемая сразу на PROD, взлет и падение Novell.

Годы: 1991-2000.

Читать далее
Total votes 84: ↑81 and ↓3+109
Comments106

CSS: о выводе коротких и длинных текстов

Reading time8 min
Views44K
Когда, пользуясь возможностями CSS, создают макет страницы, важно учитывать то, что в различных элементах этой страницы могут выводиться короткие и длинные текстовые материалы. Страницы, кроме того, нужно тестировать на предмет того, как они отображают тексты разной длины. Если разработчик чётко понимает то, как обрабатывать различные тексты, выводимые на странице, если он соответствующим образом спроектировал макет, это способно избавить его от множества неприятных неожиданностей.



Есть много ситуаций, в которых изменение некоего текстового фрагмента путём добавления или удаления всего одного слова способно заметно изменить внешний вид страницы, или, что ещё хуже «поломать» макет и сделать невозможной нормальной работу с сайтом. Когда я только начинал изучать CSS, я недооценивал последствия, к которым может привести добавление единственного слова в некий элемент или удаление из него всего одного слова. Здесь я хочу поделиться различными способами обработки текстов разной длины средствами CSS.
Читать дальше →
Total votes 26: ↑24 and ↓2+30
Comments7

Нейросети для чайников. Начало

Reading time5 min
Views804K


Так получилось, что в университете тема нейросетей успешно прошла мимо моей специальности, несмотря на огромный интерес с моей стороны. Попытки самообразования несколько раз разбивались невежественным челом о несокрушимые стены цитадели науки в облике непонятных «с наскока» терминов и путанных объяснений сухим языком вузовских учебников.

В данной статье (цикле статей?) я попытаюсь осветить тему нейросетей с точки зрения человека непосвященного, простым языком, на простых примерах, раскладывая все по полочкам, а не «массив нейронов образует перцептрон, работающий по известной, зарекомендовавшей себя схеме».

Заинтересовавшихся прошу под кат.
Читать дальше →
Total votes 258: ↑226 and ↓32+194
Comments91

Эти странные, тревожные фото говорят о том, что ИИ умнеет

Reading time4 min
Views86K


ИИ учится генерировать изображения из подписей и начинает лучше понимать наш мир


Из всех моделей искусственного интеллекта именно GPT-3 разработки OpenAI сильнее всего поразила воображение публики. Она без особых подсказок может извергать стихотворения, короткие рассказы и песни, заставляя думать, что это работы человека. Но красноречие — всего лишь уловка, которую не стоит путать с реальным интеллектом.
Разве может робот создать шедевр?
Total votes 38: ↑35 and ↓3+45
Comments145

Делаем музыкальный инструмент из кассетного плеера

Reading time6 min
Views7.5K

Кассетный синтезатор

Мне нравятся необычные музыкальные проекты. Например, я выпустил альбом, основанный на записях, сделанных NASA во время миссии «Аполлон-12». А недавно я, для управления темпом музыки, использовал собственное сердцебиение. Результаты моих музыкальных экспериментов вы можете найти здесь.

Недавно я сделал из старого кассетного плеера, напоминающего Walkman от Sony, синтезатор, управляемый MIDI-командами. Для этого мне понадобилась плата Arduino и немного кода. То, что получилось, можно назвать «кассетным синтезатором».
Total votes 27: ↑27 and ↓0+27
Comments5

Практическая стеганография. Скрытие информации в изображениях PNG

Reading time5 min
Views50K


На хакерских конкурсах и играх CTF (Capture The Flag) иногда попадаются задачки на стеганографию: вам дают картинку, в которой нужно найти скрытое сообщение. Наверное, самый простой способ спрятать текст в картинке PNG — прописать его в одном из цветовых каналов или в альфа-канале (канал прозрачности). Для выявления подобных «закладок» есть специальные инструменты, такие как stegsolve, pngcheck и stegdetect, иногда конкурсантам приходится вручную повозиться с фильтрами в GIMP или Photoshop.

Однако прогресс не стоит на месте — и в последнее время всё чаще используются другие способы скрытия данных, например, PNG-наполнение. Посмотрим, как это делается.
Читать дальше →
Total votes 21: ↑19 and ↓2+24
Comments4

HTML и CSS ошибки, которые я встречаю как человек без ограничений по здоровью

Reading time3 min
Views21K

Сейчас много шума по поводу доступности интерфейсов. Здорово, что люди обращают на это внимание и начинают разрабатывать интерфейсы, которыми могут пользоваться люди с какими-то ограничениями.


Но мы забываем про людей, у которых нет ограничений по здоровью. У них также есть право пользоваться интерфейсами так, как им удобно. Поэтому я хочу рассказать про несколько случаев, когда я встречаю недоступные интерфейсы, как человек без ограничений по здоровью.

Читать дальше →
Total votes 19: ↑18 and ↓1+20
Comments41

Чего я не знал о CSS

Reading time6 min
Views34K
Рисовать сайты я учился по старинке: глядя на исходный код и пытаясь воспроизвести увиденное. Плюс взял странную книгу для невидимых вещей (типа PHP/MySQL) — и вперёд.

Это ещё в 1999 году, когда мы писали <font size="4" color="#000000"> и т. д., а DHTML был модным.

Когда появился CSS, мой подход к обучению не отличался. Но я действительно жалею, что не потратил время, чтобы изучить CSS должным образом — и пропустил много фундаментальных понятий.

Вот некоторые вещи, которых я не знал, но хотел бы узнать раньше.
Читать дальше →
Total votes 31: ↑25 and ↓6+27
Comments30

Переключение шаблона страниц во vuejs

Reading time6 min
Views14K

Иногда в приложении требуется шаблоны для различных страниц, чтобы не копировать код от компонента к компоненту, мы прописываем шаблон в основном компоненте (он же, обычно, App.vue) и с помощью <router-view> подставляем в него различные вьюшки.


image

Как мы видим, у различных страниц общая шапка. Сайт.

А что, если нам необходимо сделать несколько шаблонов для разных страниц или состояний приложения? Этим мы сейчас и займемся.

Читать дальше →
Total votes 6: ↑5 and ↓1+9
Comments7

Information

Rating
6,375-th
Registered
Activity