Имеет ли JWT какой-либо смысл в CRUD-приложениях?

#database #rest #jwt #authorization #backend

#База данных #rest #jwt #авторизация #серверная часть

Вопрос:

Почему я должен использовать JWT вместо SessionID, например, если я выполняю вызов базы данных в той же конечной точке сразу после подтверждения авторизации для данного пользователя? В этом случае для меня это не имеет смысла, это как бы теряет цель.

Я понимаю, что идея JWT заключается в том, чтобы исключить вызов базы данных и, таким образом, сделать ее более масштабируемой и эффективной. Но если сразу после этого я вызову database, в чем тогда смысл?

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

Итак, в чем преимущество JWT перед идентификатором сеанса? Или это просто сводится к тому, что конечные точки CRUD или просто конечные точки, которые взаимодействуют с базой данных, не являются местом, где JWT сияет, я прав здесь?

Ответ №1:

JWT не имеет преимуществ перед использованием сеансов, JWTS предоставляют средства поддержания состояния сеанса на клиенте вместо того, чтобы делать это на сервере.

При сеансах на стороне сервера вам придется либо сохранять идентификатор сеанса в базе данных, либо сохранять его в памяти и следить за тем, чтобы клиент всегда обращался к одному и тому же серверу. Оба они имеют недостатки. В случае базы данных (или другого централизованного хранилища) это становится узким местом и требует обслуживания — по сути, дополнительный запрос, выполняемый с каждым запросом. Сеанс для клиента означает, что вы удаляете зависимость от сеанса на стороне сервера, но это налагает свой собственный набор проблем.

Комментарии:

1. Я понимаю, но поскольку запрос уже отправлен в базу данных (приложение типа CRUD), какая разница? Одна таблица ВЫБОРА из пользователей в худшем случае имеет тот же уровень вычислительной сложности (и аналогичную задержку в db и т.д.) По сравнению с фактической операцией с данными, с бизнес-логикой. Связь с базой данных осуществляется при каждом вызове, какой бы механизм авторизации я ни использовал, вот в чем моя главная суть. Возможно, этот тип приложений просто не подходит для JWT