三表:用户表、角色表、权限表
角色表:role
权限表:auth
1、创建需要迁移文件
php artisan make:migration create_role_table
php artisan make:migration create_auth_table
2、迁移代码
2020_04_05_003842_create_role_table.php
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateRoleTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('role', function (Blueprint $table) { $table->increments('id'); $table->string('role_name',20)->notNull(); $table->text('auth_ids'); $table->text('auth_ac'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('role'); } }
2020_04_05_003854_create_auth_table.php
②执行迁移文件生成数据表
php artisan migrate
3 确定需要的路由
添加页面:/admin/auth/add any类型
列表页面:/admin/auth/index get类型
4 创建需要的控制器文件
php artisan make:controller Admin/AuthController
5 创建2个方法,Auth控制器下的index方法、add方法,展示各自的视图即可
6 权限的添加
先添加auth模型
php artisan make:model Admin/Auth
定义模型
protected $table="auth"; public $timestamps=false;
控制器中引入模型
use App\Admin\Auth;
7、视图代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<!DOCTYPE html> <html class="x-admin-sm"> <head> <meta charset="UTF-8"> <title>添加权限</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/> <link rel="stylesheet" href="/static/css/font.css"> <link rel="stylesheet" href="/static/css/style.css"> <script src="/static/lib/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="/static/js/xadmin.js"></script> <script type="text/javascript" src="/static/js/jquery.min.js"></script> <!--[if lt IE 9]> <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script> <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <div class="x-nav"> <span class="layui-breadcrumb"> <a href="">首页</a> <a href="">演示</a> <a> <cite>导航元素</cite></a> </span> <a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="location.reload()" title="刷新"> <i class="layui-icon layui-icon-refresh" style="line-height:30px"></i></a> </div> <div class="layui-fluid"> <div class="layui-row layui-col-space15"> <div class="layui-col-md12"> <div class="layui-card"> <div class="layui-card-body "> <form method="post" id="auth_from" class="layui-form layui-col-space5" action="{{route('auth_add')}}"> <div class="layui-inline layui-show-xs-block"> <input class="layui-input" placeholder="权限名(必填)" id="auth_name" name="auth_name"> </div> <div class="layui-inline layui-show-xs-block"> <input id="controller" class="layui-input" placeholder="控制器名" name="controller"> </div> <div class="layui-inline layui-show-xs-block"> <input class="layui-input" placeholder="方法名" name="action" id="action"> </div> <div class="layui-inline layui-show-xs-block"> <select name="pid" id="select" lay-filter="select"> <option value="0">作为顶级权限</option>@foreach($data as $val) <option value="{{$val->id}}">{{$val->auth_name}}</option> @endforeach </select> </div> <div class="layui-inline layui-show-xs-block"> <input type="checkbox" name="is_nav" lay-skin="primary" title="作为导航" value="1" checked=""> </div> <div class="layui-inline layui-show-xs-block"> <button class="layui-btn" lay-submit="" lay-filter="auth_add"><i class="layui-icon"></i>增加 </button> </div>{{csrf_field()}} </form> </div> <div class="layui-card-header"> <button class="layui-btn layui-btn-danger" onclick="delAll()"><i class="layui-icon"></i>批量删除 </button> </div> <div class="layui-card-body "> <table class="layui-table layui-form"> <thead> <tr> <th> <input type="checkbox" name="" lay-skin="primary"> </th> <th>ID</th> <th>权限名称</th> <th>控制器名称</th> <th>方法名称</th> <th>父级权限</th> <th>作为导航</th> <th>操作</th> </thead> <tbody> @foreach($result as $val) <tr> <td> <input type="checkbox" name="" lay-skin="primary"> </td> <td>{{$val->id}}</td> <td>@if ($val->auth_name){{$val->auth_name}} @else N/A @endif</td> <td>@if ($val->controller){{$val->controller}}@else N/A @endif</td> <td>@if($val->action){{$val->action}}@else N/A @endif</td> <td>@if($val->parent_name){{$val->parent_name}}@else N/A @endif</td> <td>@if($val->is_nav=='1')是 @else 否 @endif</td> <td class="td-manage"> <a title="编辑" onclick="xadmin.open('编辑','xxx.html')" href="javascript:"> <i class="layui-icon"></i> </a> <a title="删除" onclick="member_del(this,'要删除的id')" href="javascript:"> <i class="layui-icon"></i> </a> </td> </tr>@endforeach </tbody> </table> </div> <div class="layui-card-body "> <div class="page"> <div> <a class="prev" href=""><<</a> <a class="num" href="">1</a> <span class="current">2</span> <a class="num" href="">3</a> <a class="num" href="">489</a> <a class="next" href="">>></a> </div> </div> </div> </div> </div> </div> </div> <script language="JavaScript"> layui.use(['laydate', 'form'], function () { var laydate = layui.laydate; var form = layui.form; $("#controller,#action").hide(); form.on('select(select)', function (data) { var _val =$("#select").val(); if (_val >0){ $("#controller,#action").show(); }else{ $("#controller,#action").val(''); $("#controller,#action").hide(); } }); form.on('submit(auth_add)', function (data) { data = data.field; if (data.auth_name.length < 3) { layer.tips('权限名必须大于2个汉字', '#auth_name', { tips: [3, '#009688'] }); return false; } $.ajax({ url: '{{route('auth_add')}}', data: data, dataType: 'text', type: 'post', success: function (data) { if (data == 1) { layer.alert('添加成功', { icon: 1, skin: 'layui-layer-molv' //样式类名 , closeBtn: 0 },function(){ window.location.reload(); // document.getElementById("auth_from").reset(); $("#auth_from")[0].reset(); }); } else { layer.alert('添加失败', { icon: 2, skin: 'layui-layer-molv' //样式类名 , closeBtn: 0 }); } } }); return false; }); //执行一个laydate实例 laydate.render({ elem: '#start' //指定元素 }); //执行一个laydate实例 laydate.render({ elem: '#end' //指定元素 }); }); /*用户-停用*/ function member_stop(obj, id) { layer.confirm('确认要停用吗?', function (index) { if ($(obj).attr('title') == '启用') { //发异步把用户状态进行更改 $(obj).attr('title', '停用'); $(obj).find('i').html(''); $(obj).parents("tr").find(".td-status").find('span').addClass('layui-btn-disabled').html('已停用'); layer.msg('已停用!', {icon: 5, time: 1000}); } else { $(obj).attr('title', '启用'); $(obj).find('i').html(''); $(obj).parents("tr").find(".td-status").find('span').removeClass('layui-btn-disabled').html('已启用'); layer.msg('已启用!', {icon: 5, time: 1000}); } }); } /*用户-删除*/ function member_del(obj, id) { layer.confirm('确认要删除吗?', function (index) { //发异步删除数据 $(obj).parents("tr").remove(); layer.msg('已删除!', {icon: 1, time: 1000}); }); } function delAll(argument) { var data = tableCheck.getData(); layer.confirm('确认要删除吗?' + data, function (index) { //捉到所有被选中的,发异步进行删除 layer.msg('删除成功', {icon: 1}); $(".layui-form-checked").not('.header').parents('tr').remove(); }); } </script> </body> </html>
8、 控制器代码
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Admin\Auth; use DB; class AuthController extends Controller { public function index() { $data=Auth::where('pid','=','0')->get(); $result=DB::table('auth as t1') ->select('t1.*','t2.auth_name as parent_name')->leftJoin('auth as t2','t1.pid','=','t2.id')->get(); return view('admin.auth_index',compact('data','result')); } public function add(Request $request) { $this->validate($request, [ 'auth_name' => 'required|min:3', //最小2 ]); $data = $request->except('_token'); $result = Auth::insert($data); return $result ? '1' : '0'; } }
上面auth控制器已经实现了权限的添加和查询
9 角色的增删改查
Route::get('role/index', 'Admin\RoleController@index')->name('role_index'); Route::any('role/add', 'Admin\RoleController@add')->name('role_add'); Route::any('role/edit', 'Admin\RoleController@edit')->name('role_edit'); Route::post('role/del', 'Admin\RoleController@del')->name('role_del');
10 控制器
<?php namespace App\Http\Controllers\Admin; use App\Admin\Role; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Admin\Auth; class RoleController extends Controller { public function index() { $data = Role::all(); return view('admin.role_index', compact('data')); } public function add(Request $request) { if ($request->isMethod('post')) { $this->validate($request, [ 'role_name' => 'required|min:2', //最小2字符 ]); $data = $request->except('_token'); if ($request->get('auth_ids')) { $role=new Role(); return $role->assignRole($data); } else { return Role::insert($data); } } else { $top = Auth::where('pid', '0')->get(); $cat = Auth::where('pid', '!=', '0')->get(); return view('admin.role_add', compact('top', 'cat')); } } public function edit(Request $request){ $data = $request->except('_token'); if ($request->isMethod('post')){ if ($request->get('auth_ids')){ $role=new Role(); return $role->assignRole($data); }else{ $post=[]; $post['auth_ids']=''; $post['auth_ac']=''; return Role::where('id',$data['id'])->update($post); } }else{ $result=Role::where('id',$request->get('id'))->get(); $top = Auth::where('pid', '0')->get(); $cat = Auth::where('pid', '!=', '0')->get(); return view('admin.role_edit', compact('top', 'cat','result')); } } public function del(Request $request){ $this->validate($request,[ 'id' => 'required', ]); $data=$request->only('id'); return Role::where('id',$data['id'])->delete(); } }
11 视图文件
index
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<!DOCTYPE html> <html class="x-admin-sm"> <head> <meta charset="UTF-8"> <title>欢迎页面-X-admin2.2</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" /> <link rel="stylesheet" href="/static/css/font.css"> <link rel="stylesheet" href="/static/css/style.css"> <script src="/static/lib/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="/static/js/xadmin.js"></script> <!--[if lt IE 9]> <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script> <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <div class="x-nav"> <span class="layui-breadcrumb"> <a href="">首页</a> <a href="">演示</a> <a> <cite>导航元素</cite></a> </span> <a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="location.reload()" title="刷新"> <i class="layui-icon layui-icon-refresh" style="line-height:30px"></i></a> </div> <div class="layui-fluid"> <div class="layui-row layui-col-space15"> <div class="layui-col-md12"> <div class="layui-card"> <div class="layui-card-body "> <form class="layui-form layui-col-space5"> <div class="layui-inline layui-show-xs-block"> <input class="layui-input" autocomplete="off" placeholder="开始日" name="start" id="start"> </div> <div class="layui-inline layui-show-xs-block"> <input class="layui-input" autocomplete="off" placeholder="截止日" name="end" id="end"> </div> <div class="layui-inline layui-show-xs-block"> <input type="text" name="username" placeholder="请输入用户名" autocomplete="off" class="layui-input"> </div> <div class="layui-inline layui-show-xs-block"> <button class="layui-btn" lay-submit="" lay-filter="sreach"><i class="layui-icon"></i></button> </div> </form> </div> <div class="layui-card-header"> <button class="layui-btn layui-btn-danger" onclick="delAll()"><i class="layui-icon"></i>批量删除</button> <button class="layui-btn" onclick="xadmin.open('添加角色','{{route('role_add')}}',800,600)"><i class="layui-icon"></i>添加角色</button> </div> <div class="layui-card-body "> <table class="layui-table layui-form"> <thead> <tr> <th> 选择 </th> <th>ID</th> <th>角色名</th> {{-- <th>权限Id集合</th> <th>权限Ac集合</th>--}} <th>状态</th> <th>操作</th> </thead> <tbody> @foreach($data as $val) <tr> <td width="80"> <input type="checkbox" name="" lay-skin="primary"> </td> <td width="80">{{$val->id}}</td> <td width="120">{{$val->role_name}}</td> {{-- <td>{{$val->auth_ids}}</td> <td>{{$val->auth_ac}}</td> --}} <td class="td-status" width="80"> <span class="layui-btn layui-btn-normal layui-btn-xs">已启用</span></td> <td class="td-manage"> <a onclick="member_stop(this,'10001')" href="javascript:;" title="启用" class="layui-btn layui-btn-xs layui-btn-primary"> <i class="layui-icon" ></i>启用 </a> <a title="编辑权限" onclick="xadmin.open('编辑','{{route('role_edit')}}?id={{$val->id}}','900','500')" href="javascript:;" class="layui-btn layui-btn-xs layui-btn-primary"> <i class="layui-icon"></i>编辑 </a> <a title="删除" onclick="role_del(this,'{{$val->id}}')" href="javascript:;" class="layui-btn layui-btn-xs layui-btn-primary"> <i class="layui-icon"></i>删除 </a> </td> </tr>@endforeach </tbody> </table> </div> <div class="layui-card-body "> <div class="page"> <div> <a class="prev" href=""><<</a> <a class="num" href="">1</a> <span class="current">2</span> <a class="num" href="">3</a> <a class="num" href="">489</a> <a class="next" href="">>></a> </div> </div> </div> </div> </div> </div> </div> </body> <script> layui.use(['laydate','form'], function(){ var laydate = layui.laydate; var form = layui.form; //执行一个laydate实例 laydate.render({ elem: '#start' //指定元素 }); laydate.render({ elem: '#end' //指定元素 }); }); /*用户-停用*/ function member_stop(obj,id){ layer.confirm('确认要停用吗?',function(index){ if($(obj).attr('title')=='启用'){ $(obj).attr('title','停用') $(obj).find('i').html(''); $(obj).parents("tr").find(".td-status").find('span').addClass('layui-btn-disabled').html('已停用'); layer.msg('已停用!',{icon: 5,time:1000}); }else{ $(obj).attr('title','启用') $(obj).find('i').html(''); $(obj).parents("tr").find(".td-status").find('span').removeClass('layui-btn-disabled').html('已启用'); layer.msg('已启用!',{icon: 5,time:1000}); } }); } function role_del(obj,id){ layer.confirm('确认要删除吗?',function(){ $.ajax({ url: '{{route('role_del')}}', data: { "id": id, "_token":'{{csrf_token()}}' }, dataType: 'text', type: 'post', success: function (data) { if (data == 1) { layer.alert('删除成功', { icon: 1, skin: 'layui-layer-molv' //样式类名 , closeBtn: 0 },function(){ window.location.reload(); }); } else { layer.alert('删除失败', { icon: 2, skin: 'layui-layer-molv' //样式类名 , closeBtn: 0 }); } } }); }); } </script> </html>
add
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<!DOCTYPE html> <html class="x-admin-sm"> <head> <meta charset="UTF-8"> <title>欢迎页面-X-admin2.2</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" /> <link rel="stylesheet" href="/static/css/font.css"> <link rel="stylesheet" href="/static/css/style.css"> <script type="text/javascript" src="/static/lib/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="/static/js/xadmin.js"></script> <!-- 让IE8/9支持媒体查询,从而兼容栅格 --> <!--[if lt IE 9]> <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script> <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <div class="layui-fluid"> <div class="layui-row"> <form action="" method="post" class="layui-form layui-form-pane"> <div class="layui-form-item"> <label for="name" class="layui-form-label"> <span class="x-red">*</span>角色名 </label> <div class="layui-input-inline"> <input type="text" id="role_name" name="role_name" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item layui-form-text"> <label class="layui-form-label"> 拥有权限 </label> <table class="layui-table layui-input-block"> <tbody> @foreach($top as $val) <tr> <td> <input type="checkbox" name="auth_ids[]" lay-skin="primary" lay-filter="father" title="{{$val->auth_name}}" value="{{$val->id}}"> </td> <td> <div class="layui-input-block"> @foreach($cat as $val_cat) @if($val_cat->pid == $val->id) <input name="auth_ids[]" lay-skin="primary" type="checkbox" title="{{$val_cat->auth_name}}" value="{{$val_cat->id}}"> @endif @endforeach </div> </td> </tr> @endforeach </tbody> </table> </div> <div class="layui-form-item"> <button class="layui-btn" lay-submit="" lay-filter="add">增加</button> </div> {{csrf_field()}} </form> </div> </div> <script> layui.use(['form','layer'], function(){ $ = layui.jquery; var form = layui.form ,layer = layui.layer; form.on('submit(add)', function(data){ data = data.field; if (data.role_name.length < 2) { layer.tips('权限名必须大于1个汉字', '#role_name', { tips: [2, '#009688'] }); return false; } $.ajax({ url: '{{route('role_add')}}', data: data, dataType: 'text', type: 'post', success: function (data) { if (data == 1) { layer.alert('添加成功', { icon: 1, skin: 'layui-layer-molv' //样式类名 , closeBtn: 0 },function(){ //window.location.reload(); // document.getElementById("auth_from").reset(); //$("#auth_from")[0].reset(); var index = parent.layer.getFrameIndex(window.name); //关闭当前frame parent.layer.close(index); parent.location.reload(); //刷新父级页面 }); } else { layer.alert('添加失败', { icon: 2, skin: 'layui-layer-molv' //样式类名 , closeBtn: 0 }); } } }); return false; }); form.on('checkbox(father)', function(data){ if(data.elem.checked){ $(data.elem).parent().siblings('td').find('input').prop("checked", true); form.render(); }else{ $(data.elem).parent().siblings('td').find('input').prop("checked", false); form.render(); } }); }); </script> </body> </html>
edit
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<!DOCTYPE html> <html class="x-admin-sm"> <head> <meta charset="UTF-8"> <title>欢迎页面-X-admin2.2</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" /> <link rel="stylesheet" href="/static/css/font.css"> <link rel="stylesheet" href="/static/css/style.css"> <script type="text/javascript" src="/static/lib/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="/static/js/xadmin.js"></script> <!-- 让IE8/9支持媒体查询,从而兼容栅格 --> <!--[if lt IE 9]> <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script> <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <div class="layui-fluid"> <div class="layui-row"> <form action="" method="post" class="layui-form layui-form-pane"> <div class="layui-form-item"> <label for="name" class="layui-form-label"> <span class="x-red">*</span>角色名 </label> <div class="layui-input-inline"> <input readonly="readonly" disabled type="text" id="role_name" name="role_name" autocomplete="off" class="layui-input" value="{{$result[0]->role_name}}"> </div> </div> <div class="layui-form-item layui-form-text"> <label class="layui-form-label"> 拥有权限 </label> <table class="layui-table layui-input-block"> <tbody> @foreach($top as $val) <tr> <td> <input type="checkbox" name="auth_ids[]" lay-skin="primary" lay-filter="father" title="{{$val->auth_name}}" value="{{$val->id}}" @if(in_array($val->id,explode(',',$result[0]->auth_ids))) checked @endif> </td> <td> <div class="layui-input-block"> @foreach($cat as $val_cat) @if($val_cat->pid == $val->id) <input name="auth_ids[]" lay-skin="primary" type="checkbox" title="{{$val_cat->auth_name}}" value="{{$val_cat->id}}" @if(in_array($val_cat->id,explode(',',$result[0]->auth_ids))) checked @endif> @endif @endforeach </div> </td> </tr> @endforeach </tbody> </table> </div> {{csrf_field()}} <div class="layui-form-item"> <button class="layui-btn" lay-submit="" lay-filter="edit">增加</button> </div> </form> </div> </div> <script> layui.use(['form','layer'], function(){ $ = layui.jquery; var form = layui.form ,layer = layui.layer; form.on('submit(edit)', function(data){ data = data.field; $.ajax({ url: '', data: data, dataType: 'text', type: 'post', success: function (data) { if (data == 1) { layer.alert('修改成功', { icon: 1, skin: 'layui-layer-molv' //样式类名 , closeBtn: 0 },function(){ //window.location.reload(); // document.getElementById("auth_from").reset(); //$("#auth_from")[0].reset(); var index = parent.layer.getFrameIndex(window.name); //关闭当前frame parent.layer.close(index); parent.location.reload(); //刷新父级页面 }); } else { layer.alert('权限无改变,修改失败!', { icon: 2, skin: 'layui-layer-molv' //样式类名 , closeBtn: 0 }); } } }); return false; }); form.on('checkbox(father)', function(data){ if(data.elem.checked){ $(data.elem).parent().siblings('td').find('input').prop("checked", true); form.render(); }else{ $(data.elem).parent().siblings('td').find('input').prop("checked", false); form.render(); } }); }); </script> </body> </html>
12 role模型
<?php namespace App\Admin; use Illuminate\Database\Eloquent\Model; class Role extends Model { protected $table = "role"; public $timestamps = false; public function assignRole($data) { //获取ac字段 $tmp = \App\Admin\Auth::where('pid', '!=', '0')->whereIn('id', $data['auth_ids'])->get(); $data['auth_ids'] = implode(',', $data['auth_ids']); $ac = ''; foreach ($tmp as $key => $value) { $ac .= $value->controller . '@' . $value->action . ','; } $data['auth_ac'] = strtolower(rtrim($ac, ',')); if(array_key_exists('id',$data)){ $post['auth_ids']=$data['auth_ids']; $post['auth_ac']=$data['auth_ac']; return self::where('id',$data['id'])->update($post); }else{ return self::insert($data); } } }
13 中间件
创建 中间件
php artisan make:middleware CheckRbac
14 注册中间件 app/Http/Kernel.php文件中
protected $routeMiddleware 数组中加入
'checkrbac' => \App\Http\Middleware\CheckRbac::class,
15 使用中间件 web.php中
Route::group(['prefix' => 'admin', 'middleware' => ['auth:admin','checkrbac']], function () {
16 中间件代码
<?php namespace App\Http\Middleware; use Closure; use Route; //因为要获取当前路由 需要引入 use Auth; //获取当前用户的信息 需要引入 class CheckRbac { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if(Auth::guard('admin') -> user() -> role_id != '1'){ //获取当前用户角色的id
$route = Route::currentRouteAction();//获取当前路由 $ac = Auth::guard('admin') -> user() -> role -> auth_ac; //获取ac集合 $ac = strtolower($ac . ',indexcontroller@index,indexcontroller@welcome'); $routeArr = explode('\\', $route); //将当前路由分割为数组 因为\是转移符 所以用\\ if(strpos($ac,strtolower(end($routeArr))) === false){ exit("<h1>您没有访问权限!</h1>"); } } return $next($request); } }