SLIM框架 - 如何使用SLIM创建访问控制列表?

时间:2014-11-11 12:16:00

标签: rest authorization acl slim

访问控制列表或ACL定义了一组规则,用于确定哪些用户组可以访问Slim应用程序中的哪些路由。

知道如何在SLIM中使用访问控制列表吗?

我尝试为我的REST API授权创建访问控制列表。

示例:

  • 角色成员只能从资源(/成员)访问GET,UPDATE

  • 管理员只能从资源(/ admin)访问GET,UPDATE,POST,DELETE

知道怎么用SLIM做到这一点?

2 个答案:

答案 0 :(得分:1)

我也在寻找使用SLIM实现资源ACL的最佳方法。我认为路由访问控制并不是件好事。在REST API中,资源由动态URL标识,例如" / member /:id"。

我认为路由上的权限控制不会对单个资源进行任何安全检查;如果用户具有对[/ member / 1]的完全访问权限,则总是可以在[/ member / 2]上执行DELETE,因为主路径始终是" / member"。

要识别单个资源,必须知道动态ID,然后才能检查用户是否拥有此特定资源的权限。

应用GET,POST,DELETE检查通用路由[/ member]我认为这不能提供正确的控制。

答案 1 :(得分: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,但我并没有走这条路来努力学习。