php - 如何在 laravel 中的 Controller 中绑定角色中间件
问题描述
我正在研究 Laravel ACL
,我创建了一个Role
中间件。我已经在我的控制器中绑定了中间件。像这样-
$this->middleware('HasRole:User|Admin|Author')->except(['userEdit','roleEdit']);
但它不能正常工作。每个角色都可以访问所有方法。如果我添加,routes/web.php
那么它可以正常工作。
Route::prefix('admin')->middleware(['HasRole:Admin|Author'])->group(function(){
Route::get('/manage-user','AppController@userList')->name('user.list');
Route::get('/manage-role','AppController@roleList')->name('role.list');
});
这样Role
中间件就可以正常工作。但我想从 mycontroller 执行此操作。
我的控制器。
function __construct()
{
$this->middleware('HasRole:User|Admin|Author')->except(['userEdit','roleEdit','permissionEdit','userUpdate']);
}
我的中间件。
public function handle($request, Closure $next, $role)
{
// return is_array($roles)? $roles: explode('|', $roles);
$roles=is_array($role)? $roles: explode('|', $role);
//dd($r);
if($request->user()===null)
{
return response('Insufficient Access',401);
}
if($request->user()->hasAnyRole($roles) || !$roles)
{
return $next($request);
}
return response('Insufficient Permission',401);
//return $next($request);
}
解决方案
推荐阅读
- sql - Cognos Analytics:关于 CASE WHEN 表达式的 QE-DEF-0459
- neo4j - 在一台机器上运行两个 Neo4j 实例作为 Windows 服务
- php - laravel - 未找到自定义类
- tcl - 如何存储按钮按下的值?
- php - 在方法中使准备好的语句静态
- java - 使用bufferimage java swing绘制多个形状
- haskell - 仍然混淆带有多个箭头的类型签名如何工作
- python - 如何在熊猫中对行进行分组?
- ios - 在 swift 中使用 Multipeer Connectivity 发送 PDF
- npm - 使用 env 变量获取缓存位置