Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在哪里定义安全角色?_Database_Security_Oop_Symfony_Roles - Fatal编程技术网

Database 在哪里定义安全角色?

Database 在哪里定义安全角色?,database,security,oop,symfony,roles,Database,Security,Oop,Symfony,Roles,我有一个用户和一个组实体,它们都拥有一系列角色 现在我想保留修改角色、添加角色等选项 我应该在类中为此使用常量,还是应该将OneToOne关系与保存所有角色的表相关联 致以最良好的祝愿, pus.dev 用户角色 组角色 创建一个与每个用户有多个关系的角色表如何。Roles表的一行将包含一个角色(字符串或常量int)和一个用户 或者,您可以创建一个角色表,并与用户表具有多个关系。使用它,您可以动态定义角色,因此不必硬编码可能的角色 在OneToMany情况下,您可以通过编写以下函数来检索角色:

我有一个用户和一个组实体,它们都拥有一系列角色

现在我想保留修改角色、添加角色等选项

我应该在类中为此使用常量,还是应该将OneToOne关系与保存所有角色的表相关联

致以最良好的祝愿, pus.dev

用户角色 组角色


创建一个与每个用户有多个关系的角色表如何。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方法中,将返回数组与用户组的角色合并。我会马上更新我的答案。