Кіт ✙
то есть, условно, api := router.Group("/api") api.Use(MyMiddleware) api.Get("/", MyHandler)
а то немного проблематично делать так, чтобы можно было миддлвари после обработчиков указывать
Vladislav
в джине можно вроде добавить новую мидлварь после добавления роутов
Илья
ладно, тогда добавлю это в туду
туду? это же просто цепочка мидлваров, не выйдет по-другому сделать
Кіт ✙
туду? это же просто цепочка мидлваров, не выйдет по-другому сделать
цепочку мидлваров мы можем ещё на этапе регистрации обработчиков применить
Кіт ✙
цепочку мидлваров мы можем ещё на этапе регистрации обработчиков применить
условно, имеем обработчик и множество миддлварей, каждая принимает следующую миддлварь
Илья
цепочку мидлваров мы можем ещё на этапе регистрации обработчиков применить
ну для такого есть группы и роуты, если я правильно понял
Кіт ✙
и вот как-то так мы превращаем эту последовательность в просто обработчик, который уже сам внутри вызывает миддлвари
Кіт ✙
ну для такого есть группы и роуты, если я правильно понял
ну, я себе это вижу так каждая дочерняя группа наследует все родительские миддлвари, но родитель ничего не знает о дочерних миддлварях при роуте, мы можем указать миддлвари для конкретного обработчика. router.Use() - это указание миддлвари для целой группы и всех дочерних групп обработчиков
Илья
я вижу это как изначально мертвый проект
Vladislav
посмотрел бы как в gin сделано
Кіт ✙
сейчас миддлвари просто лежат в обработчике как слайс, и при каждом роуте композируется слайс для group-wide миддлварей и handler-wide
но планирую реализовать дополнительно в каждой группе списочек обработчиков, зарегистрированных конкретно через эту группу. И при новой миддлвари для группы, мы просто добавляем новую цепочку в композицию миддлварей
Bogdan
Ребят, привет. Есть те, кто работал с aws-ses?
Bogdan
Суть в том, что хочу реализовать reply на своё же письмо, чтобы на почте отображалась не тьма писем, а все красиво лежало в одном. Но в доке нет ничего по этому, да и примеров тоже не нашёл
Vladislav
так а причём тут SES
Vladislav
это штука общая для всех писем
Vladislav
следовательно нужно курить почтовые заголовки вообще
Vladislav
Л - логика
whois
Товарищи, а чем паттерн хареография отличается от распределенного монолита?
Кіт ✙
у меня есть параметры пути, и я хочу, чтобы они парсились только тогда, когда они действительно нужны. То есть, у нас лежит слайс байт с этими параметрами, и если пользователь хочет получить, а у нас они не спаршены - мы их парсим, и тогда отдаём ответ но вот нюанс: что, если строка невалидна (например, заканчивается на пару без значения, даже пустого)? Как мне тогда ошибку вернуть?
Кіт ✙
ведь мы ожидаем от геттера сигнатуру аки (value []byte, found bool)
Кіт ✙
ведь мы ожидаем от геттера сигнатуру аки (value []byte, found bool)
пришёл к решению возвращать (value []byte, err error). Если не найдено, ошибка ErrNotFound
Кіт ✙
хотя, думаю, ErrNoSuchKey здесь будет более уместным, дабы не вызывать коллизий с 404 not found
fenogentov
когда в названиях функций используется Handle, а когда Handler?
Evgeny
👍
Sharifzoda
привет всем
Sharifzoda
у меня одна проблема появилась, крч, чтобы запушит в гитхаб коммити, требуется вести логин и пароль от гитхаба в терминале
Sharifzoda
но пароль не получатся вводит
Sharifzoda
тупо ничего не печатается
Sharifzoda
может кто-то сталкивался и знает как это решить?
kostyaBro
тупо ничего не печатается
А дак лол, он просто не показывает что ты печатаешь
kostyaBro
Это нормально
kostyaBro
В линухе всегда так
kostyaBro
Ну тоесть пароль вводится просто hidden
kostyaBro
Чтоб не палить количество символов
Sharifzoda
У тебя 2fa настроен?
не знаю, даже не проверил. Но у меня ОС виндовс, язык ГО
Beta
Может кто с логикой jwt помочь?
kostyaBro
не знаю, даже не проверил. Но у меня ОС виндовс, язык ГО
Ну или используй ssh-key прост. Я уже не помню когда пароль использовал.
Beta
Я правильно понимаю логику? Человек авторизировался, все данные валидны и я ему выдаю два токена - рефреш и аксесс. В midlware проверяю аксесс токен. Если аксесс не устарел, то пропускаю на энпоинт. Если аксесс устарел, то я проверяю рефреш токен и если рефреш токен не устарел, то даю новую пару рефреша и аксесса. Если и рефреш, и аксесс оба прошли по времени, то удаляю их из бд и человеку заново надо авторизоваться
kostyaBro
не знаю, даже не проверил. Но у меня ОС виндовс, язык ГО
Я помню, что на винде была проблема, что она запоминает пароль и потом фиг сбросишь.
kostyaBro
Ну да, все ок
Beta
Кк, спасибо
kostyaBro
Кк, спасибо
Ещё стоит идентифицировать пользователя, вдруг стянули токены.
Beta
А это как?
Beta
Токен же с куки считывать буду, идентифицировать по каким параметрам?
kostyaBro
Давно всем этим не занимался. Первое что пришло в голову хешировать информацию о пользователе, user-agent, ещё что-то. ip меняется его не захешировать чтоб не слетела авторизация Можно время добавить туда. Ну и хранить хеш на стороне пользователя. Он его отсылает, ты проверяешь тот не тот.
kostyaBro
Может можно его вообще в токен засунуть, но это не имеет великого смысла
Илья
https://gist.github.com/zmts/802dc9c3510d79fd40f9dc38a12bccfc
kostyaBro
Точно, это Fingerprint
Alexey
https://gist.github.com/zmts/802dc9c3510d79fd40f9dc38a12bccfc
http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/
Alexey
Альтернатива чему?
Илья
jwt
Alexey
Куки сессии, которые проверены уже давно
Илья
Куки сессии, которые проверены уже давно
а как там предотвращают кражи? как и jwt, fingerprint
Alexey
Jwt больше для краткосрочных операций подходит, где не надо заниматься инвалидацией и придумывать рефреш токены
Alexey
а как там предотвращают кражи? как и jwt, fingerprint
Точно также, только не надо с токенами бороться, кладёшь в httponly, secure куку Id сессии и хранишь в бд тот же самый фингерпринт и в миддлваре проверяешь
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
Жвт может и долго жить в принципе. Единственно кража - да. Там есть свои нюансы с точки зрения безопасности. С другой стороны, можно секурные данные защищать паролем помимо жвт. И изменение данных тоже. Кейсов кучу придумать можно. Вообще жвт идеально подходит для общения между микросервисами. В одном месте клиент собрался в жвт и раскидывай этот токен между сервисами. Сервисам не нужно будет пользователя авторизовывать и что то проверять. Важная инфа зашита. Но в таком случае у всех сервисов должен быть общий ключ.
Тимофей
Вроде всё верно
А можно ли сделать отдельный эндпоинт для рефреша токенов
Тимофей
Типо делегировать ответственность за рефреш токенов клиенту
kostyaBro
Типо делегировать ответственность за рефреш токенов клиенту
Норм тема, клиент сможет в фоне рефрешить, чтобы если че не потерять авторизацию.
Null
Абстрактные анонимные сети Среди анонимных сетей можно выявить класс систем максимально разграничивающих субъектов информации от их объектов, что приводит к возможности различных способов транспортирования информации. Из-за своей специфичной архитектуры передача информации может осуществляться в любой дуплексной среде, что полностью отрывает распространение объектов от своей сетевой архитектуры и переводит маршрутизацию в этап виртуального транслирования. Тем не менее у такой концепции существуют и свои недостатки, где одним из основных является невозможность построения поточной связи из-за отсутствия постоянных соединений, что в определённой степени становится уязвимостью к активным нападениям (более подробно данный момент будет показан в разделе «Модель абстрактных анонимных сетей на базе очередей»). ➡️ Читать дальше 📃 Теория скрытых систем @Golang_google