Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 延长前交叉韧带_Php_Security_Acl_Phalcon - Fatal编程技术网

Php 延长前交叉韧带

Php 延长前交叉韧带,php,security,acl,phalcon,Php,Security,Acl,Phalcon,phalcon当前的ACL正在管理角色、资源及其操作之间的访问。例如,如果我们希望允许特定角色进入特定资源: $acl->isAllowed("Guests", "Customers", "search"); 此检查名为“来宾”的角色是否可以访问“客户”控制器以执行“搜索”操作。 在我的场景中,我们也有“角色级别”,例如,管理员可以访问所有模块和控制器,但是,要修改内容,管理员的最低角色级别应为2。要获得修改网站配置的权限,管理员应具有角色级别3 除了角色级别之外,我们还希望分配角色可以

phalcon当前的ACL正在管理角色资源及其操作之间的访问。例如,如果我们希望允许特定角色进入特定资源:

$acl->isAllowed("Guests", "Customers", "search");
此检查名为“来宾”的角色是否可以访问“客户”控制器以执行“搜索”操作。 在我的场景中,我们也有“角色级别”,例如,管理员可以访问所有模块和控制器,但是,要修改内容,管理员的最低角色级别应为2。要获得修改网站配置的权限,管理员应具有角色级别3

除了角色级别之外,我们还希望分配角色可以访问的模型。例如,A先生和B先生都是管理员,级别相同。但是,我们决定只允许A先生访问“帐户”模型,而B先生可以访问“帐户”、“人员”等

以下是我的问题:

  • phalcon ACL是否支持角色和级别?或者,我应该创建自定义验证吗

  • 与创建类似的验证函数相比,使用ACL有什么好处

  • 如果我必须创建自定义验证,我应该把它放在哪里?在控制器中,还是在调度程序中


  • Thx目前不支持基于角色的ACL。你得自己做点什么来报道这件事。但是,该功能已被要求提供,并且在该项目的NFR长列表中:)

    我将使用Phalcon功能和自定义编程的组合。我会在
    beforeExecuteRoute
    函数中将所有内容添加到一个基本控制器中,以便在需要调度某个内容时检查ACL

    在与您类似的项目中,我在数据库中创建了两个表:

    Groups
    ------
    group_id     <- 2
    group_name   <- Admins
    
    组
    ------
    
    组id,以及我们需要获取当前用户权限的所有允许控制器/操作的时间?!例如,如果我们需要创建一个包含允许控制器的菜单,您以前是否遇到过此任务?!Nikolaos,你是如何解决的?我创建了一个类,可以加载所有这些资源,并在DI容器中注册它。然后我设置了一些函数,可以快速获得所需的信息。例如,在上面的示例中,我将调用一个函数
    getACLByGroup()
    ,这将提供我所需要的。要将其扩展到您想要的内容,您可以创建一个返回数组或JSON字符串的函数,然后您的控制器可以将其作为菜单进行解析。@NikolaosDimopoulos感谢您的回复,很抱歉您的回复太晚了。我明白了,phalcon还没有支持它并创建自定义代码似乎是唯一的方法。@NikolaosDimopoulos您是按照建议的解决方案还是使用了其他方法?很高兴知道这些挑战,如果有的话?@Ima我从来没有遇到过这种方法的任何问题。资源表(URL)和组表。将两者链接在一起,ACL就在那里了。我所需要做的就是引入缓存来减少对数据库的点击。
    ACL
    ---
    group_id        <- 2
    acl_controller  <- Customers
    acl_action      <- Search