gpt4 book ai didi

php - RBAC 或 ACL,用于私有(private)内容?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:39:40 26 4
gpt4 key购买 nike

尝试构建一个微型 CMS(某种),它需要向通过用户名/密码登录的用户发送内容,即目前仅显示图像。

假设可以有 10K 个这样的用户,每个用户在自己的帐户中有大约 100-1000 张图像,没有其他人应该能够查看这些图像。构建此类系统的推荐方法是什么?

我的直觉告诉我 ACL 是正确的方法,因为在我的案例中“角色”是无共享的,所以我必须创建与用户一样多的角色。我的方向正确吗?

最佳答案

一种特殊的角色可能是“所有者角色”。当您拥有一个对象时,此角色适用。在客户端代码中实现的想法:

if ($owner->isAllowed('view', $image) { do stuff }

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; }
}

这意味着所有者角色必须能够检查谁拥有该对象:

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
}
}

可以为 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/

关于php - RBAC 或 ACL,用于私有(private)内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8007797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com