我有一个控制器,有许多动作:
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上得到了Call to a member function has() on null
。php:218:
if (!$this->container->has('security.authorization_checker')) {
除了security.yaml
中的规则之外,在控制器类中还有什么方法可以做到这一点吗?
2条答案
按热度按时间cbjzeqam1#
您可以在类级别添加SensioFrameworkExtraBundle的isGranted注解,如下所示:
krugob8w2#
FrameworkExtraBundle已经被Symfony弃用,不鼓励使用它。可以对Symfony\Component\Security\Http\Attribute\IsGranted做同样的事情。这是一篇很好的文章,帮助了我https://nebkam.medium.com/symfony-deprecated-route-and-method-annotations-4d5e1d34556a