[英]Does Symfony2 grants de ROLE_USER by default?
我在security.yml中的角色层次结构是这样的:
role_hierarchy:
ROLE_API: ROLE_USER
ROLE_SUPERVISOR: ROLE_USER
ROLE_DIRECTOR: ROLE_SUPERVISOR
ROLE_SUPER_ADMIN: [ROLE_DIRECTOR, ROLE_API]
而且我要添加一个没有继承性的名为ROLE_RETAILER的新角色。 因此,我没有将其放在role_hierarchy部分中。
当我以仅具有ROLE_RETAILER的用户身份登录时,也会授予ROLE_USER。
在数据库中,角色字段包含以下内容:
a:1:{i:0;s:13:"ROLE_RETAILER";}
我需要摆脱那个ROLE_USER,否则我将不得不重写访问控制列表并修改某些控制器中的代码。
如果您使用的是FOSUserBundle,则默认情况下所有用户都具有ROLE_USER授予的权限,即使它没有存储在数据库中也是如此。
有关FOSUserBundle如何分配角色的更多信息,请参见此答案 。
除非您需要其所有功能,否则恕我直言,FOSUserBundle可能会过大。
根据此处的文档http://symfony.com/doc/current/security.html
1)初始security.yml设置(身份验证)
# app/config/security.yml
security:
providers:
in_memory:
memory: ~
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
default:
anonymous: ~
默认设置为匿名 。
否则,您可能想在这里查看本教程
https://knpuniversity.com/screencast/symfony2-ep2/roles-disabling-user
设置自己的默认角色处理
public function getRoles()
{
return $this->roles;
}
public function setRoles(array $roles)
{
$this->roles = $roles;
// allows for chaining
return $this;
}
public function getRoles()
{
$roles = $this->roles;
$roles[] = 'ROLE_RETAILER';
return array_unique($roles);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.