控制器构造函数中的 Symfony denyAccessUnlessGranted
Symfony denyAccessUnlessGranted in Controller constructor
我有一个控制器有很多动作:
class SomeController extends AbstractController
{
public function indexAction()
{
$this->denyAccessUnlessGranted('ROLE_SUPERMANAGER');
[...]
}
public function someAjaxAction()
{
$this->denyAccessUnlessGranted('ROLE_SUPERMANAGER');
[...]
}
public function someOtherAjaxAction()
{
$this->denyAccessUnlessGranted('ROLE_SUPERMANAGER');
[...]
}
}
为什么我不能这样做,拒绝访问该控制器的所有操作?
public function __construct()
{
$this->denyAccessUnlessGranted('ROLE_SUPERMANAGER');
}
我在 AbstractController.php:218:
上获得了 Call to a member function has() on null
if (!$this->container->has('security.authorization_checker')) {
除了 security.yaml
中的规则外,在控制器 class 中还有什么方法可以做到这一点吗?
您可以像这样在 class 级别添加 SensioFrameworkExtraBundle 的 isGranted annotation:
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
/**
* @IsGranted("ROLE_SUPERMANAGER")
**/
class SomeController extends AbstractController
{
// Your actions without auth check in each
}
我有一个控制器有很多动作:
class SomeController extends AbstractController
{
public function indexAction()
{
$this->denyAccessUnlessGranted('ROLE_SUPERMANAGER');
[...]
}
public function someAjaxAction()
{
$this->denyAccessUnlessGranted('ROLE_SUPERMANAGER');
[...]
}
public function someOtherAjaxAction()
{
$this->denyAccessUnlessGranted('ROLE_SUPERMANAGER');
[...]
}
}
为什么我不能这样做,拒绝访问该控制器的所有操作?
public function __construct()
{
$this->denyAccessUnlessGranted('ROLE_SUPERMANAGER');
}
我在 AbstractController.php:218:
上获得了Call to a member function has() on null
if (!$this->container->has('security.authorization_checker')) {
除了 security.yaml
中的规则外,在控制器 class 中还有什么方法可以做到这一点吗?
您可以像这样在 class 级别添加 SensioFrameworkExtraBundle 的 isGranted annotation:
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
/**
* @IsGranted("ROLE_SUPERMANAGER")
**/
class SomeController extends AbstractController
{
// Your actions without auth check in each
}