3

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

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

但我似乎无法让我的控制器真正得到保护。是否有任何情况会被忽略?

4

2 回答 2

12

在一个几乎完全不相关的注释中,我的问题不是源于我的配置或控制器中的任何东西,而是从 Symfony 2.0 切换到 Symfony 2.1 的迁移混淆。我未能注册 JMSDiExtraBundle,它默默地破坏了 JMSSecurityExtraBundle 的(和其他人的)注释。

在我的 AppKernel.php 中,我错过了:

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

这样一切正常,再次。

于 2013-02-03T16:10:04.047 回答
0

您需要尝试使用ROLE_ADMINor ROLE_SUPER,然后查看其是否安全。 ROLE_USER是应用于所有用户的默认角色,所以你被允许

@Secure(roles="ROLE_SUPER")
于 2013-02-03T00:22:23.313 回答