【问题标题】:SLIM Framework - How to make an Access Control List with SLIM?SLIM 框架 - 如何使用 SLIM 制作访问控制列表?
【发布时间】:2014-11-11 12:16:00
【问题描述】:
访问控制列表或 ACL 定义了一组规则,这些规则确定哪些用户组可以访问您的 Slim 应用程序中的哪些路由。
知道如何在 SLIM 中使用访问控制列表吗?
我尝试为我的 REST API 授权创建访问控制列表。
例子:
知道如何用 SLIM 做到这一点吗?
【问题讨论】:
标签:
rest
authorization
acl
slim
【解决方案1】:
仍在学习,但是...在我的 Slim 路由中,您可以调用控制器上的方法。在该控制器中,为该特定方法命名一个权限。然后只需使用in_array() 在用户的访问数组中查找该值,您可以在用户登录时将其保存在$_SESSION 中。
$this->get('/admin/users', 'AdminController:getUsers')->setName('admin.users');
AuthController 类 > getUsers 方法 >
$permission = "view_users";
if(in_array($permission, $_SESSION['user']['access']) === false) {
// show flash message, redirect- whatever
}
虽然现在大多数人都使用 Zend Acl,但我并没有走那条路来努力学习。
【解决方案2】:
我也在寻找使用 SLIM 实现资源 ACL 的最佳方式。我认为路由访问控制不是一件好事。在 REST API 中,资源由动态 URL 标识,例如“/member/:id”。
我认为对路由的权限控制不提供对单个资源的任何安全检查;如果用户对 [/member/1] 具有完全访问权限,则始终可以在 [/member/2] 上执行 DELETE,因为主路由始终是“/member”。
要识别单个资源,必须知道动态 ID,然后您可以检查用户是否对该特定资源具有权限。
对通用路由应用 GET、POST、DELETE 检查 [/member] 我认为这不能提供正确的控制。