【发布时间】:2017-12-24 07:23:42
【问题描述】:
我正在为 API 实现基于角色的 ACL,并且我有用于用户、角色、页面、页面操作(查看、添加、编辑、删除)的表以及与页面操作的角色关联。现在,我如何使用这些表编写授权门或策略并将其用于中间件?欢迎提供任何示例。
我浏览了授权文档,但不知道如何定义能力并在基于角色的场景中检查它们。
【问题讨论】:
标签: laravel laravel-5.2 acl
我正在为 API 实现基于角色的 ACL,并且我有用于用户、角色、页面、页面操作(查看、添加、编辑、删除)的表以及与页面操作的角色关联。现在,我如何使用这些表编写授权门或策略并将其用于中间件?欢迎提供任何示例。
我浏览了授权文档,但不知道如何定义能力并在基于角色的场景中检查它们。
【问题讨论】:
标签: laravel laravel-5.2 acl
以这个源代码为例: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);
}
【讨论】: