2016-01-12 18 views
7

tôi thấy phương pháp này điều khiển giúp truy cập lọc với một tên vai trò:denyAccessUnlessGranted trong điều khiển nhiều vai trò

$this->denyAccessUnlessGranted('ROLE_EDIT', $item, 'You cannot edit this item.'); 

Có thể sử dụng cùng một phương pháp với nhiều vai trò. Tôi cố gắng một cái gì đó như thế này nhưng có vẻ như doesnt làm việc:

$this->denyAccessUnlessGranted(array('ROLE_EDIT', 'ROLE_WHATEVER'), $item, 'You cannot edit this item.'); 

Nhờ sự giúp đỡ

+0

nội dung bạn muốn thể hiện? cả hai vai trò là cần thiết hay một trong hai vai trò? –

+0

tôi cần cả hai vai trò để có thể truy cập hành động – Python

Trả lời

5

nhìn vào phương pháp này cho thấy cách thức hoạt động

protected function denyAccessUnlessGranted($attributes, $object = null, $message = 'Access Denied.') 
{ 
    if (!$this->isGranted($attributes, $object)) { 
     throw $this->createAccessDeniedException($message); 
    } 
} 

vì vậy bạn có thể dễ dàng thích ứng này cho trường hợp của bạn

trong bộ điều khiển sth của bạn. như:

if(!$this->isGranted('ROLE_EDIT', $item) && !$this->isGranted('ROLE_OTHER', $item)){ 
    throw $this->createAccessDeniedException('not allowed'); 
} 
3

denyAccessUnlessGranted chấp nhận một loạt các tên Vai trò, vì vậy

$this->denyAccessUnlessGranted(['ROLE_EDIT', 'ROLE_ADMIN'], $item, 'You cannot edit this item.'); 

như vậy, bạn sẽ có thể vượt qua tất cả vai trò của bạn.

Craig

Các vấn đề liên quan