2012-04-23 21 views
7

Widzę od oficjalnego użytkownika Symfony2 doc on Security, że można zdefiniować nowe role oprócz "klasycznych" (ROLE_USER, ROLE_ADMIN itd.).Tworzenie i rejestrowanie nowych ról w Symfony2

Jak mogę określić nowe role i zarejestrować je do mojego wniosku Symfony2 w celu stworzenia hierarchii ról w security.yml?

Przepraszam, że przeszkadzam wam wszystkim! Myślę, że odpowiedź jest prosta. W rzeczywistości wydaje się, że wystarczy, aby zacząć używać nowej roli, rozpoczynając nazwę od ROLE_. Np. Można powiedzieć ROLE_NEWS_AUTHOR, aby umożliwić tylko osobom o tej roli umieszczenie wiadomości na stronie.

Dzięki.

Odpowiedz

13

Oczywiście można po prostu dodać żadnych ról zaczynające pliku ROLE_SOMEROLE.In security.yml istnieją dwie główne części do 1.limit dostępu 2. Kim są MEMEBERS mogą uzyskać dostęp

się. access_control: Ogranicza wzór i określa rolę, do której ma dostęp. b. role_hierarchy: tutaj hierarchiczna struktura roli, w poniższym przykładzie użytkownik Admin (ROLE_ADMIN) ma role ROLE_USER, ROLE_NEWS_AUTHOR. Dzięki temu może uzyskać dostęp do wszystkich stron UŻYTKOWNIKA i NEWS_AUTHOR. Bez względu na hierarchię, jaką możesz podać.

access_control: 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }/login any one can access this pattern 
     - { path: ^/admin/, roles: ROLE_ADMIN }//block all pattern /admin/anything* 
     - { path: ^/news/, roles: ROLE_NEWS_AUTHOR } //block all pattern /news/anything* 
role_hierarchy: 
     ROLE_ADMIN: [ROLE_USER,ROLE_NEWS_AUTHOR] 

W kontrolerze można sprawdzić role

if(TRUE ===$this->get('security.context')->isGranted('ROLE_ADMIN')) 
{ 
    // do something related to ADMIN 
} 
else if(TRUE ===$this->get('security.context')->isGranted('ROLE_NEWS_AUTHOR')) 
{ 
    // do something related to News Editor 
} 

Nadzieja to pomaga. Kodowanie HAppy.

+0

Dzięki za dodatkowe informacje. – JeanValjean

+0

Należy również pamiętać, że nazwy ról zawsze powinny zaczynać się od "ROLE_", inaczej Symfony ich nie rozpozna. – DarksteelPenguin