Php 如何在laravel中将数组参数传递给中间件
我不知道PHP7的语法,实际上我是新手 我正试图将像['admin'、'user'、'cmc']这样的角色传递给路由中间件,如下所示,我如何正确地执行它 这是我的路线Php 如何在laravel中将数组参数传递给中间件,php,laravel,laravel-middleware,Php,Laravel,Laravel Middleware,我不知道PHP7的语法,实际上我是新手 我正试图将像['admin'、'user'、'cmc']这样的角色传递给路由中间件,如下所示,我如何正确地执行它 这是我的路线 Route::get('/dashboard','HomeController@dashboard')->name('dashboard')->middleware("roles:['admin','user']"); //如何传递其中的角色数组 //角色中间件 <?php namespace App\H
Route::get('/dashboard','HomeController@dashboard')->name('dashboard')->middleware("roles:['admin','user']");
//如何传递其中的角色数组
//角色中间件
<?php
namespace App\Http\Middleware;
use Closure;
use App\Role;
use Illuminate\Support\Facades\Log;
class Roles
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next,$role)
{
Log::info($role);
if($request->user()==null){
return response('unauthorised Access detected',401);
}
//check for any role passed from array
if($request->user()->hasAnyRole($role)){
return $next($request);
}
return response('unauthorised Access detected',401);
}
}
我遇到过类似的情况,我想在访问路线之前检查用户是所有者还是管理员;因此,我不需要重复路由,需要传递数组而不是设置单个参数
我发送了一个参数,但使用了|作为分隔符,在middlewhere类上爆炸
在路线中,我为路线组准备了这个
Route::group(['middleware'=>['checkRole:admin | owner']],function(){
然后在我使用爆炸的中间
$roles = explode('|', $permitted_roles);
Simple在角色数组中循环,检查用户是否有一个角色:)希望这有帮助。简单易用,满足我的需要
$roles = explode('|', $permitted_roles);