Метод управления разрешениями в Symfony2

Я создаю веб-сайт Symfony2, у которого есть пользователи, и у каждого пользователя может быть несколько разрешений, например:

User1: manage users , manage sales , manage repository
User2: manage repository
user3: manage sales , manage repository
...

Какую систему разрешений использовать для такой системы?
Roles или же ACLs или же voters или что-то другое?

Спасибо

1

Решение

Роли

Роли в порядке, если вы хотите предоставить «генеральный» разрешения.

Например, если вам нужен пользователь, чтобы иметь возможность управлять все или пользователи, то вы можете создать роль для него, например, ROLE_USER_MANAGER, Или, если вы хотите предоставить ему права на управление продажами, вы можете предоставить ему ROLE_SALES_MANAGER роль.

Так что в основном используйте Роли когда у тебя есть ограниченное количество разрешений для некоторых сущности в целом.

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

ACL

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

С Symfony2 ACL, невероятно легко предоставлять и проверять разрешения, и даже разрешать отдельным пользователям предоставлять разрешения друг другу.

Кроме того, вводная часть Symfony ACL документы показывает вам оба этих подхода, а также указывает на некоторые взлеты / падения для каждого.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]