【问题标题】:Role based ACL in LaravelLaravel 中基于角色的 ACL
【发布时间】:2017-12-24 07:23:42
【问题描述】:

我正在为 API 实现基于角色的 ACL,并且我有用于用户、角色、页面、页面操作(查看、添加、编辑、删除)的表以及与页面操作的角色关联。现在,我如何使用这些表编写授权门或策略并将其用于中间件?欢迎提供任何示例。

我浏览了授权文档,但不知道如何定义能力并在基于角色的场景中检查它们。

【问题讨论】:

    标签: laravel laravel-5.2 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 中工作
    猜你喜欢
    • 1970-01-01
    • 2018-05-29
    • 2014-04-21
    • 2014-01-08
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2019-05-26
    • 2020-12-17
    相关资源
    最近更新 更多