пермишен имеет числовой ID (по порядку от 0....)
этот ID является номером позиции в битовом массиве
то есть вам, что бы передавать 64 пермишена понадобится 8 байт
(внутри JWT суем битовый массив в виде строки представлено сконвертировано в ascii )
следовательно при получении запроса делается операция:
- код перма -> получаем позицию битового массива->проверяем 0 или 1.
нельзя или можно.
я все пермишены пользователя засовываю в JWT токен и уже сразу при получении запроса, бэк понимает - можно эту операцию делать или нет.
Читать полностью…В одном запросе к БД нет ничего плохого, если ты уберешь из связки JWT и будешь использовать какой-то фреймворк в котором будет нативная реализация аутентификационной системы, там будет точно такой же механизм, каждый реквест это получение пользователя из сессии (в которой хранится его id) и запрос к БД, в этом нет ничего плохого, это не влияет на производительность так, как ты думаешь, а самое главное, что нужно запомнить - преждевременная оптимизация это плохо
Читать полностью…Хмм, есть тогда 2 пути) хранить роль в токене, но по безопасности насколько я слышал это плохо тк роль можно подменить
И сверять роль в бд по айди пользователя
Какой способ вы используете и почему?
Выходит каждый раз при авторизации на каждом пути надо лезть в бд и проверять?
По нагрузке и времени это же плохо(
Привет всем, я пишу api на fiber. Авторизация происходит по jwt токенам. В middleware я десериализую токен и либо разрешаю доступ на хендлер, либо выдаю ошибку. У меня возник вопрос, где я должен мониторить какой именно пользователь хочет перейти по ссылке? У меня есть 2 роли, пользователь и админ, различаются они по accsess level, это поле в модели User. Насколько я понимаю этот access level нельзя передавать в токенах, как и где я должен проверять роль?
Читать полностью…Всем доброго утра!
Подскажите хороший курс Go разработчика, это первый язык у меня будет
Привет, кто-то знает как в го сохранять в проекте svg файлы? С jpg/png я делаю так: отправляю картинку в binary формате, читаю через io.ReadAll и получаю срез байтов, потом сохраняю с помощью os.WriteFile. С svg так не работает, на выходе получается папка с текстовым файлом
Читать полностью…Реализуйте функцию CalcPrice
, которая:
- принимает на вход структуру Customer
и цену какой-то абстрактной покупки (int);
- возвращает в качестве первого аргумента итоговую цену с учетом скидки, а в качестве второго аргумента - ошибку, в случае если ее вернет реализация CalcDiscount
;
- в случае возврата из CalcDiscount
ошибки первый аргумент установить в 0
.
func CalcPrice(Customer, int) (int, error)
JWT токены криптостойкие, если размышлять на уровне подметы роли в пейлоаде токена, то по такой логике и юзерайди там хранить нельзя и вообще токену нельзя доверять
Читать полностью…Из токена извлекаешь id юзера, находиш в базе юзера с таким id и проверяешь его роль, вроде ж все понятно
Читать полностью…столько tui либ, но нигде dialog style у меня есть несколько утилит часть на питоне часть на го, я просто хочу единый стиль tui аля centos installer или dialog
Читать полностью…Денис Гусев:
Вот ещё одна идея
Если у вас есть подозрения, что начинает развиваться зависимость от чего-то, но полностью отказываться от этого вы не желаете, то вот что можно сделать. Можно ставить себе в определенном режиме творческие задания, до выполнения которых вы временно отказываетесь от того, к чему имеете привязанность. Очень важно, чтобы эти творческие задания нельзя было бы выполнить за пару дней, но они и не должны быть непосильными или избыточно долгими и трудоемкими. Такое может помочь только для зависимостей на ранних стадиях. Либо вы еще можете вернуться к началу. Такая практика будет зависимости уменьшать или периодически обнулять.
Там по коду в гошке он может достать из пути, а может из реквеста
Я разобрался, нужно было все заголовки установить для multipart/form-data