ica*_*s74 5 php security django content-management-system
尝试构建一个微型CMS(各种类型),需要将内容(即图像)仅用于通过用户名/密码登录的人员.
假设可以有10K这样的用户,并且每个用户在他们自己的帐户中有大约100-1K图像,这是其他任何人都无法查看的.建立这样一个系统的建议方法是什么?
我的直觉告诉我ACL是正确的方法,因为我的案例中的"角色"是无共享的,所以我必须创建与用户一样多的角色.我是朝正确的方向前进的吗?
一种特殊的角色可能是“所有者角色”。当您拥有对象时,此角色适用。在客户端代码中实现的想法:
if ($owner->isAllowed('view', $image) { do stuff }
Run Code Online (Sandbox Code Playgroud)
RBAC系统:
// initiation of roles somewhere
$this->roles->add(new OwnerRole($user); }
// when called
$roles = $this->getRoles($user);
foreach ($roles as $role) {
if ($role->isAllowed($user, $action, $object)) { return true; }
}
Run Code Online (Sandbox Code Playgroud)
这意味着所有者角色必须能够检查谁拥有该对象:
class OwnerRole implements Role
{
public function __construct(OwernChecker $ownerChecker) {
$this->owerChecker = $ownerChecker;
}
public function isAllowed(User $user, $action, $object) {
if ($this->ownerChecker->userOwnsObject($user, $object)) etc
}
}
Run Code Online (Sandbox Code Playgroud)
可以为ownerChecker 对象提供如何检查用户是否拥有对象的映射。
建议阅读以下内容:
http://www.xaprb.com/blog/2006/08/16/how-to-build-role-based-access-control-in-sql/
http://www.sqlrecipes。 com/database_design/fine_grained_role_based_access_control_rbac_system-3/