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