繁体   English   中英

Symfony2是否默认授予de ROLE_USER?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM