关于 Laravel 访问权限的建议取决于实体状态
Advice on Laravel access right depending on entity status
我已经为一家小型企业构建了一个管理平台,并且实际上正在使用 Laravel 5.4 开发 v2。
上下文如下:
- 主要管理实体如授权。
- 它有几个项目可以管理(CRUD)
- 用户可以受邀参与此授权并具有不同的角色:负责人、主要经纪人、副经纪人。
- 一些具有 "global" 权限的用户可能有权访问所有任务,例如秘书或首席执行官。
- 还有棘手的部分,访问权限会根据授权状态而变化。
关于全局访问权限,我已经通过基于 activity/role 的访问权限涵盖了所有内容。
授权访问权限存储在专用 table 存储以下内容:
mandate_status_id
role_identifier
action_identifier
is_authorized
我在主要实体上处理访问权的方式让我很烦恼,我想重构它。困扰我的是,在每次访问检查时,我都必须确定当前用户角色的授权是 "touched"。授权访问权限 table 会在每次请求时加载到单例中。
我最初选择了 rights/role 的缓存方法,但是当授权状态改变后权利没有改变时,它显示了它的局限性。
在实例化授权模型时,我正在考虑构建授权访问或授权上下文。它将为具有访问权限的用户和他们的权利做好准备。
我乐于接受建议,如果您认为我的处理方式有误,请告诉
当我使用权限时,我将其添加到 AuthServiceProvider 的引导方法中
public function boot(GateContract $gate)
{
$this->registerPolicies();
$gate->before(function ($user, $ability) {
if (! $user->isActive()) {
return false;
}
if ($user->isAdmin()) {
return true;
}
if ($user->isSuperAdmin()) {
return true;
}
if (in_array($ability, $user->getAbilities())) {
return true;
}
return false;
});
然后在用户模型中,我有从数据库获取权限的 getAbilities。看起来像这样:
public function getAbilities()
{
return $this->role->permissions->pluck('description')->toArray();
}
现在您需要创建权限模型并在数据库中设置权限。
希望对您有所帮助
我已经为一家小型企业构建了一个管理平台,并且实际上正在使用 Laravel 5.4 开发 v2。
上下文如下:
- 主要管理实体如授权。
- 它有几个项目可以管理(CRUD)
- 用户可以受邀参与此授权并具有不同的角色:负责人、主要经纪人、副经纪人。
- 一些具有 "global" 权限的用户可能有权访问所有任务,例如秘书或首席执行官。
- 还有棘手的部分,访问权限会根据授权状态而变化。
关于全局访问权限,我已经通过基于 activity/role 的访问权限涵盖了所有内容。
授权访问权限存储在专用 table 存储以下内容:
mandate_status_id
role_identifier
action_identifier
is_authorized
我在主要实体上处理访问权的方式让我很烦恼,我想重构它。困扰我的是,在每次访问检查时,我都必须确定当前用户角色的授权是 "touched"。授权访问权限 table 会在每次请求时加载到单例中。
我最初选择了 rights/role 的缓存方法,但是当授权状态改变后权利没有改变时,它显示了它的局限性。
在实例化授权模型时,我正在考虑构建授权访问或授权上下文。它将为具有访问权限的用户和他们的权利做好准备。
我乐于接受建议,如果您认为我的处理方式有误,请告诉
当我使用权限时,我将其添加到 AuthServiceProvider 的引导方法中
public function boot(GateContract $gate)
{
$this->registerPolicies();
$gate->before(function ($user, $ability) {
if (! $user->isActive()) {
return false;
}
if ($user->isAdmin()) {
return true;
}
if ($user->isSuperAdmin()) {
return true;
}
if (in_array($ability, $user->getAbilities())) {
return true;
}
return false;
});
然后在用户模型中,我有从数据库获取权限的 getAbilities。看起来像这样:
public function getAbilities()
{
return $this->role->permissions->pluck('description')->toArray();
}
现在您需要创建权限模型并在数据库中设置权限。
希望对您有所帮助