Как аутентифицировать каждый API для авторизации пользователя? - PullRequest
1 голос
/ 18 апреля 2019

Я хотел бы авторизовать пользователей для каждого вызова API.Например: app.post('/user', isAuth('user.write'), controller);

Выше api требуется роль user.write, так как проверять, каждый раз, когда у пользователя есть эта роль или нет?Функция isAuth проверяет этого пользователя.

По моему мнению, мы можем сохранять все роли пользователей во время входа в Redis, и при каждом вызове API мы получаем его из Redis.

Но роли болеетогда 1500, не станет ли это тяжелым?Или я должен проверить базу данных для каждого API?

Или любой другой лучший способ, чтобы я мог легко проверить каждый API для пользователя?

1 Ответ

0 голосов
/ 18 апреля 2019

Вы можете использовать токены JWT .

Ваш API затем выдаст токен JWT пользователю, имеющему роли.

Затем пользователь предоставляет этот токен длякаждый запрос, и вам не нужно совершать вызовы в Redis, потому что вы просто декодируете токен JWT и проверяете роли оттуда.

Маркер JWT подписан сервером и не можетбыть измененным клиентом, чтобы вы знали, что роли - это роли, фактически предоставленные сервером.

Подробнее о безопасности JWT читайте в этой статье

Популярная библиотека дляработа с токенами JWT в узле - это node-jsonwebtoken , который имеет более 10000 звезд на GitHub.

...