Я пытаюсь использовать аннотации для защиты своих контроллеров:
namespace Vinny\StreamBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use JMS\SecurityExtraBundle\Annotation\Secure; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; class HomeController extends Controller { /** * @Route("/home", name="home") * @Secure(roles="ROLE_USER") */ public function indexAction() { ...
Но я не могу заставить мои контроллеры быть на самом деле обеспечены. Есть ли случаи, когда это игнорируется?
Что касается почти полностью несвязанной ноты, проблема с моей проблемой связана не с чем-либо в моей конфигурации или контроллере, а с переходом от Symfony 2.0 к Symfony 2.1. Я не смог зарегистрировать JMSDiExtraBundle, который молча исказил аннотации JMSSecurityExtraBundle (и другие).
В моем AppKernel.php я отсутствовал:
public function registerBundles() { $bundles = array( ... new JMS\DiExtraBundle\JMSDiExtraBundle($this), ...
С этим все работает отлично, снова.
Вам нужно попробовать с ROLE_ADMIN
или ROLE_SUPER
а затем посмотреть, защищен ли он или нет. ROLE_USER
– это роль глухоты, применяемая ко всем пользователям, поэтому разрешены
@Secure(roles="ROLE_SUPER")