2013-03-18 13 views
2

我嘗試訪問功能的控制器通過註解@PreAuthorize確保它(Symfony2的2.1.8):的Symfony2:JMSSecurityExtraBundle:#ID ==在@PreAuthorize user.getId()不工作

當我寫:

/*  
* @PreAuthorize("hasRole('ROLE_ADMIN') or #id == '5'") 
*/ 

public function editAction($id){ 
(...) 

我可以throught 但是當我使用:「令牌不具備所需的角色」

/*  
* @PreAuthorize("hasRole('ROLE_ADMIN') or #id == user.getId()") 
*/ 

public function editAction($id){ 
(...) 

我得到一個錯誤,是的,我登錄和認證的Wi th正確的身份證...

任何想法的人?

回答

2

好吧,我想通了......

基本上預授權註釋是這樣做的

user.getId() === '5' 

哪裏的getId將返回一個整數,這樣做對字符串進行比較。我設法得到它的工作,加入這個方法我的用戶實體:

public function getStringId() 
{ 
    return (string) $this->id; 
} 

然後改變註釋本

@PreAuthorize("user.getStringId() == '2' and hasRole('ROLE_ADMIN')") 

希望幫助!

+0

是的,它確實!非常感謝 – 2013-03-18 20:27:13

相關問題