Laravel Policy支持大量权限

时间:2018-05-17 16:29:57

标签: laravel laravel-authorization

我希望使用Laravel的政策来授权Blade的大量用户权限。

  • 我的授权位于拥有所有应用权限的ActionPermission模型下。

  • User通过数据透视表

  • 访问了他的权限名称

使用:

public function permissions(){
return $this->belongsToMany('App\ActionPermission', 'users__action_permission');
}

所以基本上我收到了一组用户权限并调用$user->permissions()->pluck('module_name')->toArray();我会将权限名称作为数组。

有没有办法通过刀片在一行中引入一系列策略?那么在我的布局中我会插入一行刀片指令吗?

在Laravel的文档中,他们使用函数的名称作为blade指令,如下所示:

public function update(User $user, Post $post)
{
    return $user->id === $post->user_id;
}

在刀片中:

@can('update', $post)
    <!-- The Current User Can Update The Post -->
@elsecan('create', App\Post::class)
    <!-- The Current User Can Create New Post -->
@endcan

如果您拥有大量权限,则上述内容无关紧要。 执行大量权限的最佳做法是什么?

BTW任何方法(不仅是提供者引导程序)都是受欢迎的。

1 个答案:

答案 0 :(得分:0)

访问模型以从刀片创建可能是危险的,因为您正在跳过某些验证并要求Eloquent处理好所有事情(它不会)。

除此之外,我希望这可以解释你所寻求的:

$user = User::find($idOfUser) // retrieves an active record of User
$user->permissions // gets the record of permissions that is related to the user, believing the relationship is estabished

User::find($idOfUser)->permissions->update($data) // updates the record in permissions that is related to that user