Database 在哪里定义安全角色?
我有一个用户和一个组实体,它们都拥有一系列角色 现在我想保留修改角色、添加角色等选项 我应该在类中为此使用常量,还是应该将OneToOne关系与保存所有角色的表相关联 致以最良好的祝愿, pus.dev 用户角色 组角色Database 在哪里定义安全角色?,database,security,oop,symfony,roles,Database,Security,Oop,Symfony,Roles,我有一个用户和一个组实体,它们都拥有一系列角色 现在我想保留修改角色、添加角色等选项 我应该在类中为此使用常量,还是应该将OneToOne关系与保存所有角色的表相关联 致以最良好的祝愿, pus.dev 用户角色 组角色 创建一个与每个用户有多个关系的角色表如何。Roles表的一行将包含一个角色(字符串或常量int)和一个用户 或者,您可以创建一个角色表,并与用户表具有多个关系。使用它,您可以动态定义角色,因此不必硬编码可能的角色 在OneToMany情况下,您可以通过编写以下函数来检索角色:
创建一个与每个用户有多个关系的角色表如何。Roles表的一行将包含一个角色(字符串或常量int)和一个用户 或者,您可以创建一个角色表,并与用户表具有多个关系。使用它,您可以动态定义角色,因此不必硬编码可能的角色 在OneToMany情况下,您可以通过编写以下函数来检索角色:
/** @OneToMany(...) */
/** $roles contains strings */
protected $roles;
public function getRoles() {
return $this->roles;
}
/** @ManyToMany(...) */
protected $roles;
// ...
public function getRoles() {
$retRoles = array();
// symfony2 requires a string array
foreach($this->roles as $role) {
$retRoles[] = $role->getName(); // or $retRoles[] = 'ROLE_' . $role->getName();
}
return $retRoles;
}
或
在许多情况下,您可以通过编写以下函数来检索角色:
/** @OneToMany(...) */
/** $roles contains strings */
protected $roles;
public function getRoles() {
return $this->roles;
}
/** @ManyToMany(...) */
protected $roles;
// ...
public function getRoles() {
$retRoles = array();
// symfony2 requires a string array
foreach($this->roles as $role) {
$retRoles[] = $role->getName(); // or $retRoles[] = 'ROLE_' . $role->getName();
}
return $retRoles;
}
不要忘记,您的用户模型必须实现symfony的内置用户界面
对于组角色,您可以执行以下操作:
class Group
{
/** @ManyToMany(...) */
protected $roles;
public function getRoles() {
return $this->roles;
}
}
class User
{
/** @ORM\Column(...) */
protected $group;
/** @ManyToMany(...) */
protected $roles;
// ...
public function getRoles() {
$retRoles = array();
// symfony2 requires a string array
$roles = $this->roles->merge($this->group->getRoles());
foreach($roles as $role) {
$retRoles[] = $role->getName(); // or $retRoles[] = 'ROLE_' . $role->getName();
}
return $retRoles;
}
}
为什么不使用FOSUserBundle呢?它提供您所需的一切。您好,已从FOSUserBundle切换回自己的捆绑包:)我如何在Symfony中创建新角色?您好,感谢您提供详细说明。我会走很多路。您能推荐我在角色实体的属性中使用什么吗?与ACL兼容需要哪些属性?还有,我如何保证用户和组有多个用户?一个组包含多个用户,每个用户有多个角色,每个角色有多个用户,imho组与用户角色无关。但是组可以保存特殊数据。例如,有一个额外的管理员组,所有成员都有一个额外的角色\u Admin。当拥有角色的组很好时,这不是一个很好的例子吗?然后在组和角色之间建立一个OneToMany关系,并且在用户的getRoles方法中,将返回数组与用户组的角色合并。我会马上更新我的答案。