#spring #database #rest #web #jwt
#весна #База данных #отдых #веб #jwt
Вопрос:
Я прочитал о JWT за последние несколько дней, и я полностью понял концепцию, лежащую в его основе, и силу авторизации с точки зрения времени. Мой вопрос в том, что происходит с механизмами авторизации JWT, когда устанавливаются конечные точки CRUD? Допустим, мне нужно удалить определенную «задачу» от конкретного пользователя, который отправляет мне запрос, содержащий токен JWT. Что мне нужно сделать, это зайти в базу данных, проверить, принадлежит ли пользователь к этой задаче, и после этого удалить эту задачу из базы данных. Это приводит к 2 вызовам базы данных. Теперь мой вопрос в том, действительно ли JWT настолько эффективен, когда дело доходит до конечных точек, содержащих операции CRUD, которые требуют подтверждения того, что определенный пользователь может выполнять определенные действия? Кроме того, даже если бы нам не нужно было этого делать, у нас все еще есть 1 вызов базы данных, который является CRUD-действием. Может кто-нибудь помочь мне разобраться с этим?
Ответ №1:
Наиболее распространенная модель заключается в том, чтобы серверная часть отправляла токен JWT во внешний интерфейс при аутентификации пользователя. Затем этот токен включается в последующие запросы, и сервер может использовать его для проверки того, что запрос действительно поступает от вошедшего в систему пользователя. Как только это будет подтверждено, сервер может безопасно вызвать базу данных для выполнения изменения или действия с базой данных.
Одна вещь, которую вы могли бы рассмотреть, — это использование такого решения, как Zetabase (https://zetabase.io). Это автоматически предоставляет вам токен JWT и все механизмы аутентификации, а также систему ограничений, которая позволяет вам выполнять задачи, о которых вы здесь говорите, вообще без использования серверной части, вы можете делать это непосредственно из интерфейса.
Другими словами, с Zetabase или даже с Firebase вы полностью пропускаете этот средний слой. Сама база данных управляет именами пользователей, паролями и аутентификацией, а затем вы выполняете вызовы к базе данных непосредственно из интерфейса. Это работает только потому, что эти две базы данных допускают «ограничения», которые гарантируют, что только соответствующим пользователям разрешено выполнять определенные действия.