2

我尝试访问通过@PreAuthorize 注释(Symfony2 2.1.8)保护它的控制器中的函数:

当我写:

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

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

我可以通过,但是当我使用:

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

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

我收到“令牌没有所需的角色。”错误,是的,我已使用正确的 ID 登录并进行了身份验证...

有人知道吗?

4

1 回答 1

2

好吧,我想通了...

基本上 PreAuthorize 注释就是这样做的

user.getId() === '5'

其中 getId 返回一个整数并与字符串进行比较。我设法通过将此方法添加到我的用户实体来使其工作:

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

然后将注释更改为此

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

希望有帮助!

于 2013-03-18T17:40:27.190 回答