研究 CakePHP 時對於其內建的 ACL(Access Control Lists) component 很好奇,同時因為最近的專案可能會利用到,因此提前做了一番習作和研究。
CakePHP ACL 提供的功能其實很單純,只是將 ACO(Access Control Object) 和 ARO(Access Request Object) 兩個樹狀結構進行權屬優先判斷。譬如說一個 A 部門裡面有 A1, A2 兩個人,針對一個物件對象 B1,若設定 A 部門為 allow,但 A2 為 deny,則 A1 可以操作而 A2 則否。進一步若針對 B1 的上層 B 設定 allow/deny,則將會依照「預設拒絕」以及「特定優先」的原則,來判定操作的 true/false。
至於這個 ARO 要怎麼套用到一般的 user 或 group,CakePHP ACL 倒沒有太過干涉,只是提供了int 和 varchar 兩個欄位作為參考索引。同樣的 ACO 怎麼套用到資料物件或網頁操作,也是只有 int 和 varchar 兩個欄位作為索引。
我在 Takor 習作時,是將 ARO 的 id 對應到 users.id,並讓 ACO 採取 ':controller/:action' 的文字欄位作為索引,如此要判斷某某人可不可以在某個 controller 下進行某個 action 動作,就可以很方便地交給 ACL 來幫忙判斷。
另外,一邊在習作一邊在觀察 ARO/ACO 兩個 table 裡面究竟資料結構長得什麼樣子,發現其實不難理解,只是如果想要手動修改樹狀結構,恐怕會有點麻煩,最好還是寫程式來完成較好。譬如說,父層 A=>{lft=>1, rght=>6},子層 A1=>{lft=>2, rght=>3}, A2=>{lft=>4, rght=>5},這時候若要插入第三個子層 A3,則得要先將 A 改為 {lft=>1, rght=>8},然後設定 A3=>{lft=>6, rght=>7},如此樹狀結構才會把 A3 納入到 A 的範圍以內。同時若要把 A2 底下加入一個孫層 A2a,則不僅 A2 要把 rght 往後挪動以容納 A2a,而且 A3 也會被牽動更改左右鍵值。
目前還沒很用力地去尋找一個視覺化管理 ACL 的範本,但我相信一定有人跟我一樣被這 ACO/ARO 搞得迷迷糊糊的,然後想要寫個簡易的程式管理。
分享到:
相关推荐
在CakePHP中,Access Control List(ACL)是一个强大的工具,用于管理应用程序中的权限和访问控制。让我们深入探讨一下CakePHP中的ACL系统。 ### ACL基础概念 **1. ACO (Access Control Object)**:ACO代表要控制...
在 CakePHP 中,Access Control List(ACL,访问控制列表)是一个强大的工具,用于管理用户对资源的访问权限。本教程将深入探讨CakePHP的ACL系统,以便你能够有效地实现安全的用户权限管理。 **1. ACL基本概念** ...
CakePHP Acl插件 一个用于在CakePHP应用程序中管理ACL的插件。 插件尚处于初始开发阶段,我最近开始使用cakephp,请发送建议和建设性批评。 通过composer安装 您可以使用composer 安装此插件。 将以下依赖项添加到...
- **简单的基于ACL的应用**:介绍了一个基于ACL(Access Control List)的应用实例,用于演示访问控制列表的使用方法。 #### 十三、Appendices(附录) - **迁移指南**:提供了从旧版本到新版本的迁移指南,帮助...
1. 插件:提供可复用的代码库,如Auth用于身份验证,Acl处理权限控制。 2. 组件:类似PHP的类,封装通用功能,如RequestHandler处理HTTP请求类型。 总结,CakePHP 1.3.21是一个功能丰富的PHP框架,通过遵循MVC架构...
- **config**:配置文件,如数据库连接、ACL等。 - **controllers**:控制器文件。 - **components**:组件文件。 - **index.php**:入口文件,允许将app目录作为DocumentRoot。 - **models**:模型文件。 - **...
3. **配置 CakePHP**:配置文件位于`app/config`目录下,包括数据库和访问控制列表(ACL)等设置。`index.php`文件允许你将`app`目录作为Web服务器的DocumentRoot。 4. **Scaffolding**:Scaffolding是快速原型开发...
标题 "PippoAcl-开源" 指的是一个基于 CakePHP 框架的开源访问控制列表(Access Control List, ACL)插件。在 Web 应用开发中,ACL 是一种常用的安全机制,用于管理和控制用户对系统资源的访问权限。PippoAcl 提供了...
用于 CakePHP 2.x 的 AclManager 该插件允许您通过 Acl 模块轻松管理 CakePHP 2.x 中的权限。 从更新和修复原始源 特征 管理每个节点的权限 更新缺少 ARO(用户、角色等)的数据库 更新缺少 ACO 的数据库(控制器...
CakePHP是一个开源的PHP on rails的full-stack ...灵活的ACL机制 13.数据的清理(Data Sanitization) 14.灵活的视图缓存(Flexible View Caching) 15.可在任何web站点的子目录里工作,不需要改变Apache配置
ACL(Access Control List)访问控制机制是CakePHP中的一个重要部分,它允许开发者精细地控制用户对资源的访问权限。数据清理(Data Sanitization)功能则确保了输入数据的安全性,防止SQL注入等攻击。视图缓存...
6. **插件和组件**:利用 CakePHP 插件和组件扩展框架的功能,比如 ACL(访问控制列表)或 CakeSession。 7. **Ajax 支持**:了解如何结合 jQuery 或其他 JavaScript 库,利用 CakePHP 的 JSON 或 XML 响应进行异步...
ACL控制 数据清理 (YY友情参与) Cake Session Component (papa友情参与) The Request Handler Component The Security Component 视图(View)缓存 简单用户认证示例 Cake的命名约定 (YY友情参与) 版
不仅如此,CakePHP 还提供了一套完整的权限控制机制(Acl),帮助开发者轻松实现用户角色和权限管理,这对于大型网站或应用的运营至关重要。 总的来说,CakePHP 框架以其简洁的代码结构、高效的开发流程和强大的...
- **简单ACL控制的应用程序**:介绍了一个基于ACL的角色权限控制示例。 - **第二部分**:进一步扩展了第一部分的内容,提供了更复杂的权限管理方案。 #### 十三、Appendices(附录) - **2.4迁移指南**:为从旧...
权限控制可能通过 CakePHP 的ACL(Access Control List)组件来实现,允许管理员设定不同用户对相册和照片的操作权限。 在开发过程中,CakePHP 的 Bake 工具可以自动生成CRUD(创建、读取、更新、删除)操作的控制...
10. **灵活的ACL机制**:用于实现细粒度的权限控制,确保不同用户只能访问他们被授权的部分。 11. **数据清理**:提供了一系列的数据清理方法,帮助开发者确保数据的一致性和完整性。 12. **视图缓存**:通过视图...
2. **权限控制**:通过ACL(Access Control List)机制实现对不同角色的权限控制。 #### 十二、CakePHP的命名约定 CakePHP遵循一定的命名约定,这有助于保持代码的一致性和可维护性。 1. **类名**:采用驼峰式...
8. ACL(访问控制列表):如果项目中涉及权限管理,你可能需要了解如何实现用户角色和权限的控制。 9. 调试和错误处理:如何利用CakePHP的调试工具进行问题定位和优化。 此外,通过阅读源代码,你可以深入理解...