Last major update: 25.08.2020
- Что такое авторизация/аутентификация
- Где хранить токены
- Как ставить куки ?
- Процесс логина
- Процесс рефреш токенов
- Кража токенов/Механизм контроля токенов
| /** | |
| * | |
| * ПАТТЕРН SINGLETON | |
| * | |
| * Паттерн Одиночка гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. | |
| * | |
| */ | |
| // Если сделать вот так, то свойство _done реально становится приватным. | |
| const _done = Symbol('done'); | |
| class Task { | |
| constructor(title, initiateMessage = 'Создание задачи') { | |
| this.title = title; // Зачем нижнее подчеркивание: название геттеров и сеттеров не должно совпадать | |
| // с названием свойств обьекта. И т.к. здесь у нас есть сеттеры/геттеры, то свойству обьекта | |
| // добавили нижнее почеркивание, чтобы не было ошибки. | |
| // Таким образом свойство становится ПРИВАТНЫМ (на самом деле с ним можно делать что хочешь, но | |
| // по соглашению такие свойства приватные). |
| /** | |
| * | |
| * ПАТТЕРН НАБЛЮДАТЕЛЬ (почтальон) | |
| * Несколько наблюдателей (подписчиков) могут получать данные от одного субьекта (почтальона) | |
| * | |
| */ | |
| class Publisher { // субьект, получает и рассылает данные | |
| constructor() { | |
| this.observersList = []; // реестр наблюдателей (подписчиков) |
| /** | |
| * | |
| * ПАТТЕРН ДЕКОРАТОР (обертка) | |
| * Позволяет наделить обьект новыми возможностями не меняя первоначальный класс и не создавая дочерние классы | |
| * Принцип работы: декоратор помещает целевой обьект в обьект обертку, кот-й запускает базовое поведение обьекта, | |
| * а затем добавляет/отнимает что-то свое. | |
| * | |
| */ | |
| class interface_Coffee { |
| ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ: | |
| Паттерны предназначены для решения типичных задач, возникающих в ходе проектирования. Любой паттерн описывает задачу, которая снова и снова возникает в нашей работе, а также принцип ее решения, причем таким образом, что это решение можно потом использовать миллион раз, ничего не изобретая заново. | |
| Все паттерны обеспечивают возможность изменения некоторой части системы независимо от других частей. | |
| -- Паттерн — решение задачи в контексте. | |
| Не самое понятное определение, вы не находите? Не беспокойтесь, мы разберем все его составляющие — все эти контексты, задачи и решения: | |
| - Контекстом называется ситуация, в которой применяется паттерн. Ситуация должна быть достаточно типичной и распространенной. | |
| - Задачей называется цель, которой вы хотите добиться в контексте, в совокупности со всеми ограничениями, присущими контексту. | |
| - Решением называется обобщенная архитектура, которая достигает заданной цели при соблюдении набора ограничений. Решение должно быть возможно применять снова |
| /** | |
| * | |
| * ПАТТЕРН КОМАНДА | |
| * | |
| Смысл: отделить объект-источник запроса от объекта, принимающего и выполняющего эти запросы. | |
| Паттерн КОМАНДА — это поведенческий паттерн проектирования, который превращает запросы в объекты, позволяя передавать | |
| их как аргументы при вызове методов, ставить запросы в очередь, логировать их, а также поддерживать отмену операций. | |
| Убирает прямую зависимость между объектами, вызывающими операции, и объектами, которые их непосредственно выполняют. | |
| Позволяет реализовать простую отмену и повтор операций. |
| /** | |
| * | |
| * ПАТТЕРН АДАПТЕР | |
| * | |
| Обеспечивает совместимость классов с разными интерфейсами, т.е. выполняет роль переводчика. | |
| В итоге клиент (тот кто вызывает методы) через адаптер может работать с разными классами с разными интерфейсами, даже не подозревая об этом, | |
| хотя умеет пользоваться только одним интерфейсом. | |
| */ |
| /** | |
| * | |
| * ПАТТЕРН ФАСАД | |
| * | |
| Предоставляет унифицированный интерфейс к группе интерфейсов подсистемы. Фасад определяет высокоуровневый интерфейс, упрощающий работу с подсистемой. | |
| Превращает сложный интерфейс с множеством методов в простой интерфейс с минимум методов. | |
| В данном случае интерфейс фасада компьюетра будет иметь всего 2 метода - вкл/выкл, при том что под капотом выполняется | |
| 12 методов. | |
| Таким образом отделяется код клиента от кода реализации. |
| /** | |
| * | |
| * ПАТТЕРН ШАБЛОННЫЙ МЕТОД | |
| * | |
| Задает «скелет» алгоритма в методе, оставляя определение реализации некоторых шагов субклассам. | |
| Субклассы могут переопределять некоторые части алгоритма без изменения его структуры. | |
| Методы внутри шаблонного метода могут быть пустыми, выдавать ошибку если не описаны в субклассе или иметь реализацию по умолчанию. | |
| Применение: | |
| 1. Когда подклассы должны расширять базовый алгоритм, не меняя его структуры. | |
| 2. Когда у вас есть несколько классов, делающих одно и то же с незначительными отличиями. Если вы редактируете один |