Symfony2安全性@Secure注释无法正常工作

时间:2013-02-02 19:40:58

标签: php security symfony

我正在尝试使用注释来保护我的控制器:

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()
    {
     ...

但我似乎无法让我的控制器实际上受到保护。是否有任何可以忽略的情况?

2 个答案:

答案 0 :(得分:12)

在一个几乎完全不相关的说明中,我的问题不是源于我的配置或控制器中的任何问题,而是从Symfony 2.0到Symfony 2.1的交换混合。我没有注册JMSDiExtraBundle,它正在悄悄地破坏JMSSecurityExtraBundle(以及其他人的)注释。

在我的AppKernel.php中,我一直在想:

public function registerBundles()
{
    $bundles = array(
    ...
    new JMS\DiExtraBundle\JMSDiExtraBundle($this),
    ...

随着一切正常,再次。

答案 1 :(得分:0)

您需要尝试使用ROLE_ADMINROLE_SUPER,然后查看其是否受到保护。 ROLE_USER是适用于所有用户的聋人角色,因此允许使用

@Secure(roles="ROLE_SUPER")