#javascript #reactjs #permissions #jwt
#javascript #reactjs #разрешения #jwt
Вопрос:
Давайте возьмем абстрактный домен, в котором пользователь может создавать группы, приглашать других пользователей и назначать разрешения внутри этих групп.
Схематически это выглядит так
[
{
"groupId": 1,
"name": "Group 1",
"users": [
{ "id": 1, "name": "User 1", "permissions": ["A", "B", "C"] }, // same
{ "id": 2, "name": "User 2", "permissions": ["A", "B"] }
{ "id": 3, "name": "User 3", "permissions": ["C"] }
]
},
{
"groupId": 2,
"name": "Group 2",
"users": [
{ "id": 4, "name": "User 4", "permissions": ["A", "B", "C"] },
{ "id": 5, "name": "User 5", "permissions": ["A", "B"] }
{ "id": 1, "name": "User 1", "permissions": ["C"] } // same
]
}
]
В приложении 5 пользователей (от 1 до 5). Каждый из пользователей имеет разрешения внутри своей группы (A, B, C).
Вопрос в том, где хранить это разрешение на веб-клиенте?
Я использую React.js Node.js и управляйте моей аутентификацией через JWT. Можно ли иметь объект в JWT пользователя, который хранит разрешения для каждой группы. Что-то вроде этого
Поддельный-JWT
{
"userId": 1,
"groups": [
{ "groupId": 1, "permissions": ["A", "B", "C"] },
{ "groupId": 2, "permissions": ["C"] }
]
}
Я также ожидаю обновления пользовательских разрешений «на лету» без выхода пользователя из системы
Есть какие-нибудь предложения о том, как это сделать правильно?
Ответ №1:
Если ваши правила авторизации (роли) становятся сложными, тогда может быть разумно рассмотреть возможность использования вместо этого подхода авторизации на основе утверждений.
Я думаю, что этот вопрос SO является хорошей отправной точкой:
Комментарии:
1. Спасибо за совет. Чтобы быть более понятным, я хотел бы знать детали реализации моего конкретного случая, а не общего подхода.