【问题标题】:Symfony4 : create custom ROLESSymfony4:创建自定义角色
【发布时间】:2019-07-20 23:00:03
【问题描述】:

我知道有一种方法可以在 symfony 应用程序上创建和管理自定义角色,但我没有找到任何文档或教程,所以我尝试独自完成,但没有成功。这是我所做的:

role_hierarchy:
    ROLE_TEST:
    ROLE_USER: ROLE_TEST
    ROLE_ADMIN: ROLE_USER

ROLE_TEST 的角色应该低于ROLE_USER,并且我的被授予ROLE_TEST 的用户可以访问受@IsGranted("ROLE_USER") 保护的方法(他们不会这样做)

所以我的问题是缺少什么?

【问题讨论】:

  • 我想你想错了。您的设置应该意味着: ROLE_USER 将能够访问受 @IsGranted("ROLE_TEST") 保护的方法,以便能够做您想做的事情,也许您可​​以切换角色 ROLE_USER: ROLE_TEST: ROLE_USER ROLE_ADMIN: ROLE_TEST
  • 删除你的 role_hierarchy 中的第一行
  • 当然可以,但是 ROLE_TEST 不应该访问受 @IsGranted("ROLE_USER") 保护的方法
  • 哦,你的意思是他们确实有访问权限,但他们不应该。我知道了。您是否安装了debug-pack 并在页面底部有工具栏?如果是这样,请单击安全图标(它应该显示登录用户的名称)。在安全选项卡上,请检查用户拥有哪些角色以及哪些选民授予了权限。
  • 数据库说我有 ["ROLE_LESSEE"],但调试工具栏说:Roles [▼ "ROLE_LESSEE" "ROLE_USER" ] Inherited Roles [▼ "ROLE_LESSEE" ] 所以现在我明白是什么问题了,谢谢!我会试着找出他来自哪里

标签: php symfony permissions symfony4 roles


【解决方案1】:

通过阅读 cmets,我认为如果您的登录系统遵循 Symfony 文档,您应该拥有这个:

$roles[] = 'ROLE_USER';

在您的 getRoles 方法中,只需将 'ROLE_USER' 替换为 '' 并再次尝试将您的方法与 @IsGranted("ROLE_USER") 一起使用

【讨论】:

    猜你喜欢
    • 2018-12-11
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2019-06-29
    • 2011-02-28
    • 2016-03-07
    相关资源
    最近更新 更多