关于 Laravel 访问权限的建议取决于实体状态

Advice on Laravel access right depending on entity status

我已经为一家小型企业构建了一个管理平台,并且实际上正在使用 Laravel 5.4 开发 v2。

上下文如下:

关于全局访问权限,我已经通过基于 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();
}

现在您需要创建权限模型并在数据库中设置权限。

希望对您有所帮助