Laravel 中基于角色的 ACL
Posted
技术标签:
【中文标题】Laravel 中基于角色的 ACL【英文标题】:Role based ACL in Laravel 【发布时间】:2017-12-24 07:23:42 【问题描述】:我正在为 API 实现基于角色的 ACL,并且我有用于用户、角色、页面、页面操作(查看、添加、编辑、删除)的表以及与页面操作的角色关联。现在,我如何使用这些表编写授权门或策略并将其用于中间件?欢迎提供任何示例。
我浏览了授权文档,但不知道如何定义能力并在基于角色的场景中检查它们。
【问题讨论】:
【参考方案1】:以这个源代码为例:Spatie/Laravel-permission
也是一个中间件检查角色或权限的例子:
can.php
public function handle($request, Closure $next, $permission)
if(!$request->user()->can($permission))
flash()->warning(trans('alert.noAccess'));
return abort(403);
return $next($request);
role.php
public function handle($request, Closure $next, $role, $permission = null)
if (auth()->guest())
return redirect(route('auth.login'));
if (!$request->user()->hasRole($role))
abort(403);
return $next($request);
【讨论】:
它使用 laravel 授权门,它是在 Laravel 5.1.11 中添加的,因此它将在 5.2 中工作以上是关于Laravel 中基于角色的 ACL的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel spatie 中分配多个角色和基于多个角色的权限?