我正在开发一个Symfony应用程序,该应用程序将具有可分配给用户的一些基本角色。 注意,我没有使用FOSUserBundle,因为我不需要超过一半的功能。
我在数据库中定义了我的用户,但我想将角色定义保留在数据库之外。但是我发现的几个示例和其他教程将角色保留在数据库中,并使用ManyToMany
关系将它们分配给用户。这对我来说似乎很奇怪,因为角色的实际使用被硬编码到应用程序中。
例如,如果我有一个自定义角色ROLE_EDITOR
,我可以将几个路由和控制器限制为ROLE_EDITOR
。为什么我要在数据库中“定义”这个角色?这意味着在开发我的应用程序并添加新用户角色时,我必须编写脚本以编程方式将新角色插入到数据库中,或者在部署使用该角色的代码之前手动执行此操作。我不希望管理员能够添加/编辑/删除角色。它应该是以编程方式完成的设计决策。
在Drupal中,有一个角色和权限的概念。您可以在代码中定义权限并检查这些权限,然后在数据库中定义角色并为其分配权限。但似乎Symfony只有Roles的概念。
我希望有人可以为我填写一条丢失的信息。如何实现在数据库中完成角色分配的系统,但角色本身仅通过代码进行管理?
我的直觉是创建一个与User
相关的单个实体,并为ROLE_NAME
提供一个字符串字段。但这似乎违背了拥有一个真正的Role
实体的范式。