基于角色的ACL在Laravel中

时间:2017-07-19 07:18:42

标签: laravel laravel-5.2 acl

我正在为API实现基于角色的ACL,我有用户,角色,页面,页面操作(查看,添加,编辑,删除)和页面操作的角色关联表。现在,我如何使用这些表为授权编写Gate或Policy并在中间件中使用它?欢迎任何一个例子。

我查看了授权文档,但没有了解如何定义功能并在基于角色的方案中检查它们。

1 个答案:

答案 0 :(得分: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);
}