我在 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/gongcheng/488271.html
上一篇:如何在DQL中僅按年份分組?
下一篇:美居和vue訂閱
