我尝试通过@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进行了记录和身份验证...
有人在想吗?
答案 0 :(得分:2)
好吧,我想通了......
基本上,PreAuthorize注释正在执行此操作
user.getId() === '5'
其中getId返回一个整数并对字符串进行比较。我设法通过将此方法添加到我的用户实体来实现它:
public function getStringId()
{
return (string) $this->id;
}
然后将注释更改为此
@PreAuthorize("user.getStringId() == '2' and hasRole('ROLE_ADMIN')")
希望有所帮助!