我正在專案中創建角色管理Symfony 6。
除了基本的 USER 角色(將被硬編碼)之外,計劃是所有其他角色都將來自資料庫而不是硬編碼。我知道很多 Symfony 指南和教程都假設你有一組有限的角色可以硬編碼,但我不想在這里這樣做。
常見角色將是USER、ADMIN和SUPERADMIN但我想避免硬編碼除 USER (任何經過身份驗證的成員都應該擁有)之外的任何東西。
我正在使用DDD方法,也許值得一提。
有沒有人有什么建議?我會感謝一些關于此事的意見。
我假設使用:
class UserRoleEnum
{
const ROLE_USER = 'USER';
const ROLE_ADMIN. = 'ADMIN';
const ROLE_SUPER_ADMIN = 'SUPER_AMDIN';
}
..不是最好的方法嗎?
uj5u.com熱心網友回復:
如果您想擁有動態角色,那么為什么不創建一個具有角色的物體并將多對多關系添加到 User 物體。使用這種方法,您將能夠在管理面板中動態分配必要的角色,并在必要時更方便地構建您的 sql 請求。
角色物體
/**
* @ORM\Entity()
* @ORM\Table(name="roles")
*/
class Role
{
/**
* @var int
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(name="id", type="integer", unique=true)
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=225, unique=true)
* @Assert\NotBlank()
*/
private $name;
}
用戶物體
/**
* @ORM\Table(name="users")
* @ORM\Entity(repositoryClass=UserRepository::class)
*/
class User implements UserInterface
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToMany(targetEntity="Role",cascade={"persist"})
* @ORM\JoinTable(name="users_roles",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id")}
* )
*/
private $userRoles;
// other properties
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485147.html
