8

我从有关安全的官方 Symfony2 文档中看到,除了“经典”角色(即 ROLE_USER、ROLE_ADMIN 等)之外,还可以定义新角色。

如何定义新角色并将它们注册到我的 Symfony2 应用程序,以便在security.yml中创建角色层次结构?

很抱歉打扰了大家!我认为答案很简单。实际上,通过名称以ROLE_开头来开始使用新角色似乎就足够了。例如,可以说ROLE_NEWS_AUTHOR只允许具有该角色的人能够在网站中插入新闻。

谢谢。

4

1 回答 1

16

当然,您可以简单地添加以 ROLE_SOMEROLE 开头的任何角色。在 security.yml 文件中有两个主要部分 1.限制访问 2.谁是成员可以访问

一种。access_control:限制模式并指定可以访问的角色。湾。role_hierarchy:这里是角色的层次结构,对于以下示例,管理员用户(ROLE_ADMIN)具有角色 ROLE_USER、ROLE_NEWS_AUTHOR。因此,他可以访问 USER 和 NEWS_AUTHOR 的所有页面。无论您可以提供什么层次结构。

access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }/login any one can access this pattern
        - { path: ^/admin/, roles: ROLE_ADMIN }//block all pattern /admin/anything*
        - { path: ^/news/, roles: ROLE_NEWS_AUTHOR } //block all pattern /news/anything*
role_hierarchy:
        ROLE_ADMIN: [ROLE_USER,ROLE_NEWS_AUTHOR]

在您的控制器中,您可以检查角色,

if(TRUE ===$this->get('security.context')->isGranted('ROLE_ADMIN') )
{
     // do something related to ADMIN
}
else if(TRUE ===$this->get('security.context')->isGranted('ROLE_NEWS_AUTHOR') )
{
    // do something related to News Editor
}

希望这可以帮助你。快乐的编码。

于 2012-04-23T10:27:58.353 回答