Краткий

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

Примерно так: «Джефф хочет видеть телефон Мэри, но для этого Джеффу нужен доступ к телефонному каталогу с ролью подписчика».

Телефонный каталог старый, да? Что ж, если Джефф не является абонентом телефонной компании, он не может иметь каталог (или просить друга с этой ролью, но это другая история).

Возможности доступа ко всему

Если вы видели последнюю статью, значит, вы знакомы с JWT auth in Hapi. Что ж, эта статья похожа, но с одним улучшением.

Hapi предоставляет нам встроенный способ проверки ролей непосредственно в маршрутах. проверьте ниже:

Как видите, добавление в строки 19–21 и 30–32 объекта auth этого объекта содержит области для маршрутов. Вы можете добавить массив строк, чтобы пользователи с разными ролями могли получить доступ к этому маршруту. У пользователя должна быть только одна из этих строковых ролей для данного доступа.

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

В моем случае я генерирую JWT в пользовательском контроллере в случаях LogIn и Create, ну, в обоих случаях после успеха вызывается функция getToken.

Получите жетон!

Если в вашем случае у вас не может быть этой функции, вы просто добавляете массив или строку ролей в свой JWT, и это будет работать нормально.

Вместо того, чтобы просто передать идентификатор в функции getToken (), вы должны передать объект пользователя и установить в jwt.sign идентификатор и роли этого пользователя. После этого Hapi сможет проверить роли пользователя по запросу.

Если вы не добавляете в маршрут параметр scope , для доступа к этому маршруту не требуются роли, и маршрут будет доступен для всех пользователей без ограничений.

Роли проверены

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

Ну что ж, пока все !! До встречи!