访问控制列表或ACL定义了一组规则,用于确定哪些用户组可以访问Slim应用程序中的哪些路由。
知道如何在SLIM中使用访问控制列表吗?
我尝试为我的REST API授权创建访问控制列表。
示例:
角色成员只能从资源(/成员)访问GET,UPDATE
管理员只能从资源(/ admin)访问GET,UPDATE,POST,DELETE
知道怎么用SLIM做到这一点?
答案 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,但我并没有走这条路来努力学习。