我开始使用 Voter System 来保护我的 URL,但我有很多问题。
首先,我不知道我是否必须使用“角色”或“权限”。
“角色”是指 Role_User、Role_Manager 等。“权限”是指“Access_users”、“Edit_User”、“Add_User”等。
我说得对吗?
如果是,如果我没有要控制的对象,我想检查我的选民中的权限以控制对 URL 的访问。
例子
/**
* @Route("/", name="list")
* @Security("is_granted('ROLE_ADMIN') or is_granted('PERM_ACCESS_SERIES')")
*/
public function list()
{
$series = $this->seriesService->findAll();
return $this->render('backend/series/list.html.twig', [
"series" => $series
]);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想检查用户是否具有角色ROLE_ADMIN或权限PERM_ACCESS_SERIES,但我不知道如何在我的选民中进行。
有关信息,“ROLE_ADMIN”是在我的 security.yaml 配置中设置的,但我想让这些角色动态化,以便能够创建角色(并为角色分配权限?)。
在我的 Voter 类中,当我控制一个 Document 时,我会检查所有者和其他可以管理该 Document 的用户,但是当我不传递一个 Document 时,我真的不知道该怎么做。
只是获取用户的权限并检查请求的权限是否在他们中。类似的东西:
if (in_array($attribute, $user->getPermissions())) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
其实这是我的选民
protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
{
//ADMIN and SUPER_ADMIN can do anything they want ! …Run Code Online (Sandbox Code Playgroud)