Vladislav
в джине можно вроде добавить новую мидлварь после добавления роутов
Кіт ✙
Null
Илья
Кіт ✙
и вот как-то так мы превращаем эту последовательность в просто обработчик, который уже сам внутри вызывает миддлвари
Кіт ✙
Кіт ✙
ну для такого есть группы и роуты, если я правильно понял
ну, я себе это вижу так
каждая дочерняя группа наследует все родительские миддлвари, но родитель ничего не знает о дочерних миддлварях
при роуте, мы можем указать миддлвари для конкретного обработчика. router.Use() - это указание миддлвари для целой группы и всех дочерних групп обработчиков
Илья
я вижу это как изначально мертвый проект
Кіт ✙
Vladislav
посмотрел бы как в gin сделано
Bogdan
Ребят, привет. Есть те, кто работал с aws-ses?
Bogdan
Суть в том, что хочу реализовать reply на своё же письмо, чтобы на почте отображалась не тьма писем, а все красиво лежало в одном. Но в доке нет ничего по этому, да и примеров тоже не нашёл
Vladislav
так а причём тут SES
Vladislav
это штука общая для всех писем
Vladislav
следовательно нужно курить почтовые заголовки вообще
Vladislav
Л - логика
whois
Товарищи, а чем паттерн хареография отличается от распределенного монолита?
Кіт ✙
у меня есть параметры пути, и я хочу, чтобы они парсились только тогда, когда они действительно нужны. То есть, у нас лежит слайс байт с этими параметрами, и если пользователь хочет получить, а у нас они не спаршены - мы их парсим, и тогда отдаём ответ
но вот нюанс: что, если строка невалидна (например, заканчивается на пару без значения, даже пустого)? Как мне тогда ошибку вернуть?
Кіт ✙
ведь мы ожидаем от геттера сигнатуру аки (value []byte, found bool)
Кіт ✙
хотя, думаю, ErrNoSuchKey здесь будет более уместным, дабы не вызывать коллизий с 404 not found
fenogentov
когда в названиях функций используется Handle, а когда Handler?
kostyaBro
Evgeny
Evgeny
👍
Sharifzoda
привет всем
Sharifzoda
у меня одна проблема появилась, крч, чтобы запушит в гитхаб коммити, требуется вести логин и пароль от гитхаба в терминале
Sharifzoda
но пароль не получатся вводит
Sharifzoda
тупо ничего не печатается
Sharifzoda
может кто-то сталкивался и знает как это решить?
kostyaBro
kostyaBro
Это нормально
kostyaBro
В линухе всегда так
kostyaBro
Ну тоесть пароль вводится просто hidden
kostyaBro
Чтоб не палить количество символов
Beta
Может кто с логикой jwt помочь?
Sharifzoda
Beta
Я правильно понимаю логику?
Человек авторизировался, все данные валидны и я ему выдаю два токена - рефреш и аксесс.
В midlware проверяю аксесс токен. Если аксесс не устарел, то пропускаю на энпоинт. Если аксесс устарел, то я проверяю рефреш токен и если рефреш токен не устарел, то даю новую пару рефреша и аксесса. Если и рефреш, и аксесс оба прошли по времени, то удаляю их из бд и человеку заново надо авторизоваться
Sharifzoda
kostyaBro
kostyaBro
Ну да, все ок
Beta
Кк, спасибо
kostyaBro
Кк, спасибо
Ещё стоит идентифицировать пользователя, вдруг стянули токены.
Beta
А это как?
Beta
Токен же с куки считывать буду, идентифицировать по каким параметрам?
kostyaBro
Давно всем этим не занимался.
Первое что пришло в голову хешировать информацию о пользователе, user-agent, ещё что-то.
ip меняется его не захешировать чтоб не слетела авторизация
Можно время добавить туда.
Ну и хранить хеш на стороне пользователя.
Он его отсылает, ты проверяешь тот не тот.
kostyaBro
Может можно его вообще в токен засунуть, но это не имеет великого смысла
Илья
https://gist.github.com/zmts/802dc9c3510d79fd40f9dc38a12bccfc
kostyaBro
Точно, это Fingerprint
Илья
Alexey
Альтернатива чему?
Илья
jwt
Alexey
Куки сессии, которые проверены уже давно
Alexey
Jwt больше для краткосрочных операций подходит, где не надо заниматься инвалидацией и придумывать рефреш токены
Alexey
Если например юзер агент и айпи отличаются от тех что в сессии, возвращаешь 401
Alexey
И за счёт этого можешь разлогинить без проблем все сессии
Илья
Илья
kostyaBro
Напомню, по ip 401 не ок если пользователь с телефона.
Alexey
на каждый запрос вызов бд
Если важна безопасность, то скорее всего будешь делать короткие access токены по жизни, также хранить его только в памяти приложения на клиенте и в таком случае:
1. Пользователь обновил страницу, токена больше нет и надо лезть опять в базу за рефреш токеном
2. Токен протух, также лезть в базу чтобы получить рефреш
Но при этом весь смысл jwt теряется когда ты хранишь рефреш токены в базе, что по сути является теми же сессиями, если надо разлогинивать пользователей, то придётся делать некий чёрный список с токенами, что тоже идёт против stateles jwt
И получается что jwt не такой уже и stateful как хотелось бы и в базу ты все равно будешь ходить, не проще ли сделать куки сессии и не ограничивать себя?)
Alexey
на каждый запрос вызов бд
https://www.youtube.com/watch?v=GdJ0wFi1Jyo&t=31s
вот здесь намного больше инфы касаемо этого
Alexey
Имхо сессии для клиент - сервер, jwt для кратковременных операций (например смена пароля или скачивание файла) и аутентификации между сервисами
Maks
Жвт может и долго жить в принципе. Единственно кража - да. Там есть свои нюансы с точки зрения безопасности. С другой стороны, можно секурные данные защищать паролем помимо жвт. И изменение данных тоже. Кейсов кучу придумать можно. Вообще жвт идеально подходит для общения между микросервисами. В одном месте клиент собрался в жвт и раскидывай этот токен между сервисами. Сервисам не нужно будет пользователя авторизовывать и что то проверять. Важная инфа зашита. Но в таком случае у всех сервисов должен быть общий ключ.
Тимофей
Тимофей
Вроде всё верно
А можно ли сделать отдельный эндпоинт для рефреша токенов
Тимофей
Типо делегировать ответственность за рефреш токенов клиенту
Null
Абстрактные анонимные сети
Среди анонимных сетей можно выявить класс систем максимально разграничивающих субъектов информации от их объектов, что приводит к возможности различных способов транспортирования информации. Из-за своей специфичной архитектуры передача информации может осуществляться в любой дуплексной среде, что полностью отрывает распространение объектов от своей сетевой архитектуры и переводит маршрутизацию в этап виртуального транслирования. Тем не менее у такой концепции существуют и свои недостатки, где одним из основных является невозможность построения поточной связи из-за отсутствия постоянных соединений, что в определённой степени становится уязвимостью к активным нападениям (более подробно данный момент будет показан в разделе «Модель абстрактных анонимных сетей на базе очередей»).
➡️ Читать дальше
📃 Теория скрытых систем
@Golang_google