【发布时间】:2016-11-18 13:01:18
【问题描述】:
我正在尝试在我的 Symfony3 应用程序中实现角色。
我在继承角色方面遇到困难。我将每个用户的角色保存到用户表中的角色列。我没有将继承的角色保存到数据库中。
我的 User 实体中的 getRoles() 函数从角色列返回角色,这不会检索继承的角色。
如何确保 getRoles() 也以优雅的方式返回继承的角色?我尝试了以下方法:
public function getRoles()
{
$roles = $this->roles;
// ensure the inherited roles from role heirarchy are added accordingly
switch ($roles[0]){
case 'ROLE_SUPER_ADMIN':
$roles[] = 'ROLE_AGENCY_ADMIN';
$roles[] = 'ROLE_CLIENT_ADMIN';
$roles[] = 'ROLE_ADMIN';
break;
case 'ROLE_AGENCY_ADMIN':
case 'ROLE_CLIENT_ADMIN':
$roles[] = 'ROLE_ADMIN';
break;
}
$roles[] = 'ROLE_USER';
return array_unique($roles);
}
这按预期工作,但我觉得有更好的选择。安全分析器告诉我以下内容:
所以我在角色部分也有继承的角色,这对我来说似乎不合适。如果安全分析器知道继承的角色,那么我也应该能够访问该信息,而不是自己将其混合在一起?
我一直在搜寻 SO 以找到合适的解决方案,但到目前为止一直被难住了。
衷心感谢任何指导。
【问题讨论】:
标签: symfony security inheritance roles