根据用户访问的路由判断有无权限访问

首先,我使用的是用户角色权限控制包 Laravel-permissio
关于怎么样设置权限,请看地址
在权限设置好后,需要去验证某个用户有没有权限访问某个路由,
就要去设置一个中间件,

生成中间件

php artisan make:middleware CheckPermission

在中间件里面写入

//验证用户是否具有请求权限
        $user = auth('api')->user();
        if (!$user->can($request->route()->getName())) {
            abort(403, '你无权限访问');
        }
        return $next($request);

这个$request->route()->getName()是获取当前访问的路由名称,因为路由名称在定义路由的时候都是设置好的了,所以,这里可以直接获取

好了,中间件设置好了,就要去注册一下才可以使用
路径在appHttpKernel.php里面的$routeMiddleware数组

在数组里面加入就可以了

    'check.permission'=>AppHttpMiddlewareCheckPermission::class,//用户权限中间件

注册好了,可以使用了,就去路由组里面去使用它
竟然是验证有无权限,就需要用户登录,那么就在需要用户登录组里面使用这个中间件

 $api->group(['middleware' => ['api.auth','check.permission']], function ($api) {}

这个路由组里面的所有路由都需要权限验证了

比如,无权限验证就提示无权限

有权限的用户就可以访问

版权声明:
作者:linrux
链接:https://www.tot7.cn/technology/php/38.html
来源:Code林
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>