我为小型企业构建了一个管理平台,并实际使用Laravel 5.4来开发v2。
上下文如下:
关于全球访问权限,我已经完全涵盖了基于活动/角色的访问权限。
授权访问权限存储在存储以下内容的专用表中:
mandate_status_id
role_identifier
action_identifier
is_authorized
我在主要实体上处理访问权限的方式正在困扰我,我想重构它。困扰我的是,在每次访问检查时,我必须确定当前用户角色与被触及的#34;。每个请求都会将权限访问权限表加载到单例中。
我首先考虑了权利/角色的缓存方法,但是当授权状态发生后权利没有改变时,它显示了它的限制。
在考虑任务模型时,我正在考虑建立任务访问权限或授权上下文。它将为具有访问权限的用户及其权利做好准备。
我愿意接受建议,如果你认为我以错误的方式接近它,请告诉
答案 0 :(得分:0)
当我使用权限时,我将其添加到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();
}
现在,您需要创建权限模型并在数据库中设置权限。
希望有所帮助