2013-02-02 64 views
3

我試圖使用註解來保護我的控制器:Symfony2的安全@Secure標註不工作

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

但我似乎無法讓我的控制器實際上是安全的。有沒有這種情況會被忽略?

回答

11

在一個幾乎完全不相關的音符,我的問題的問題,並沒有從我的配置或控制器事情幹,但一個遷移從Symfony 2.0轉換到Symfony 2.1。我沒有註冊JMSDiExtraBundle,它正在悄悄地破壞JMSSecurityExtraBundle(和其他人)的註釋。

在我AppKernel.php,我已經失蹤:

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

隨着一切工作正常,再一次。

+0

哈哈,我打算告訴你,檢查你的軟件包是否已註冊 – user2134226

+0

這很愚蠢,可能是我名單上的最後一件事。 – Dandy

+0

+1。如果可以的話,我會給你+10。謝謝! :) – Cyprian

0

您需要嘗試使用ROLE_ADMINROLE_SUPER,然後查看其是否安全。 ROLE_USER是適用於所有用戶的deafult作用,還是你被允許

@Secure(roles="ROLE_SUPER") 
+0

這是真的,ROLE_USER被分配給所有用戶,但在本例中我沒有被認證爲用戶或任何人。不幸的是,即使將關卡升級爲ROLE_SUPER或ROLE_ADMIN也無法正常工作。 – Dandy

+0

@Dan在右下角的symfony調試欄中,單擊用戶圖像並查看您擁有的角色。有時候你會被你之前的會話認證,但我們沒有注意到。在調試欄中,您將看到您是否已登錄 – user2134226

+0

不幸的是,這也不會產生任何結果。我可以保證沒有活動的用戶會話,因爲此問題正在通過測試,清除緩存和空用戶提供程序進行復制。 SF |似乎|跳過註釋。 – Dandy