Express REST API с JWT и маршрутами - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь создать Express API с аутентификацией JWT.

Однако мне было интересно, как лучше всего разрешить пользователям доступ только к своим собственным ресурсам.

Например, если есть - это пользователь с идентификатором 1, и у каждого пользователя есть список книг в базе данных:

Идентификатор уже является частью токена JWT, но обычно будет запрос на что-то вроде / users / 1 / books для получить все книги, принадлежащие пользователю 1. Могут ли мои маршруты по-прежнему выглядеть так, и я бы просто проверил, что идентификатор в токене совпадает с тем, для которого сделан запрос, или есть какой-либо другой / более простой способ?

Спасибо за помощь!

1 Ответ

0 голосов
/ 19 июня 2020

Вы можете определить некоторые права доступа на основе роли или идентификатора пользователя. Пример: роли: {root, admin, staff}

Затем в ваших маршрутах вы можете проверить, есть ли у этого пользователя разрешение на доступ к функциям, или вы можете сделать это на уровне контроллера, чтобы проверить права доступа.

Вам необходимо определить отношения модели между User, UserModel. В вашем случае, насколько я понимаю, вам нужны отношения между UserModel и BooksModels.

UserModel hasMany BooksModel

Когда вы вызываете findOne () для получения определенных c данных пользователя, вы можете просто определить include: 'aliasModelName', чтобы получить пользователей связанные данные книги.

Таким образом, у вас может быть только 1endpoint users /: id для получения данных пользователей и данных книг. Это зависит от того, что вы действительно хотите, у вас также может быть конечная точка users /: id / books для получения всех книг, принадлежащих этому пользователю.

Ваше определение модели станет

BooksModel belongsTo UserModel

Если вы используете hasMany, вы можете получить все нужные вам результаты всего за один запрос. .

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...