2014-01-06 2 views
1

Я спрашиваю себя, что является лучшим способом получить доступ к сеттерам в веб-приложении.Доступ к сеттерам в symfony 2

Простой пример:

  • зонные имеют свойство
  • Только члены группы имеет доступ к изменению тех

И тут начинается вопрос, что это лучший способ обеспечить это ,

Как я обычно использую, написать класс обслуживания, который вызывается в каждом методе. , например:

public function changePropertyAction ($bandname) 
{ 
    if(!BandAuthService::isBandMember($bandname)) { 
     // redirect 
    } 
    // change the property to a new one 
} 

public function changeAnotherPropertyAction($foo) 
{ 
    if(!FooAuthService::isFooMember($foo)) { 
     // redirect again 
    } 
} 

Есть еще один способ, таким образом, в каждом действии звонки пользователей, система должна проверить, если это bandmember?

ответ

3

Хорошей практикой для управления правами на объекты является использование ACL (списки контроля доступа). ACL можно рассматривать как систему ролей Symfony, но применяется к каждому объекту в вашей базе данных.

Итак, каждая запись в БД имеет владельца, у которого есть все доступ к нему; но вы также можете дать некоторые права другим пользователям, как просмотр, редактирование, ...

Наконец вы проверить право что-то вроде:

$securityContext->isGranted('EDIT', $band) 

Вы можете найти простое представление here и более подробную информацию о ACL here.

Смежные вопросы