“我的角色”列值:["ROLE_ADMIN"]
我的实体/用户:
/**
* @ORM\Column(type="json", nullable=true)
*/
private $roles = [];
public function getRoles() : ?array {
$roles = $this->roles;
$roles[] = 'ROLE_USER';
return array_unique($roles);
}
$currentUser->getRoles();
在var_dump
中给了我:
array(2) { [0]=> string(10) "ROLE_ADMIN" [1]=> string(9) "ROLE_USER" }
我的security.yaml:
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
探查器工具栏告诉我我已经登录。
但是我仍然看到消息:
Symfony\Component\HttpKernel\Exception\
AccessDeniedHttpException
但是当我将security.yaml更改为:
access_control:
- { path: ^/admin, roles: ROLE_USER }
然后异常消失。
我错过了什么吗?
答案 0 :(得分:0)
尝试注销和登录,symfony将角色保留在“记住我”令牌中,您可以在事件探查器的“安全性”选项卡中检查当前分配的角色。很有可能角色不是在“记住我的Cookie”中,这就是为什么它不允许您访问的原因。