API-интерфейсы есть повсюду, у них много разных лиц и возможностей.

По сути, API-интерфейсы действуют как транспортные средства, которые извлекают информацию из одного источника и передают ее в другой. Например, API Google Maps, используемый в навигационных системах, или API Stripe, используемый для онлайн-платежей и т. Д.

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

В этом руководстве мы рассмотрим простую реализацию авторизации на основе ролей или управления доступом в API Node.js с помощью платформы Express. В этом примере я буду работать с JWT для аутентификации на основе токенов в Node.js.

Предположения. В этом руководстве предполагается, что аудитория имеет некоторые знания о Nodejs и платформе Express.

Предпосылки

Этот каталог содержит вспомогательные функции, написанные как независимые и многократно используемые фрагменты кода, которые при необходимости вызываются в файле router или controller.

N.B Свойство JWTSECRET в .env используется API для подписи и проверки токена JWT. обновите его своей уникальной случайной строкой, чтобы ограничить несанкционированный доступ к вашему приложению.

Реализуйте функцию authhelper как промежуточное ПО для Nodejs в маршрутах API.

Это промежуточное ПО написано для перехвата запроса маршрута. промежуточное программное обеспечение здесь проверяет, отправляется ли токен-носитель в качестве информации заголовка или тела, если токен все еще действителен, и, если да, отправляет полезные данные токена, такие как user_id and role, другому методу в течение жизненного цикла запроса.

Промежуточное ПО, используемое в этом фрагменте, называется mustBeLoggedIn

Вышеупомянутые маршруты защищены промежуточным программным обеспечением, которое проверяет токен-носитель и извлекает полезную нагрузку вместе с обработчиком ошибок.

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

Доступ к контроллеру маршрута Nodejs

Этот контроллер определяет все маршруты для API, определения маршрутов сгруппированы в верхней части файла, а реализации маршрутов приведены ниже.

Маршруты, использующие промежуточное ПО mustBeLoggedIn, доступны только для аутентифицированных пользователей, если роль включена (например, authorize (Role.Admin или Role.Superuser)), то маршрут ограничен для пользователей с указанной ролью / ролями.

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

Это простая реализация авторизации на основе ролей или управления доступом к API.

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

Спасибо за аудиторию и надеюсь, что эта статья оказалась для вас полезной 🤗. не стесняйтесь обращаться к Github, Twitter и LinkedIn. Ставьте лайки, комментируйте и делитесь 😌.

Выучить больше

Первоначально опубликовано на https://blog.nextwebb.tech.