Laravel - 如何通过路由组将变量传递给中间件?
Laravel - How to pass variables to middleware through route group?
这是我的路由组,
Route::group(['middleware' => 'checkUserLevel'], function () {
// my routes
});
这是我的中间件 checkUserLevel,
public function handle($request, Closure $next, $level)
{
$user = Auth::user();
if ($user->level > $level) {
return redirect('testUrl');
}
return $next($request);
}
我想将 $level
变量从路由组传递给中间件。
谢谢
您只需使用冒号将多个参数传递到中间件即可。像这样使用它:
Route::group(['middleware' => 'checkUserLevel:some_value_of_level'], function () {
// my routes
});
现在,您可以在 $level 变量中包含此值。
public function handle($request, Closure $next, $level)
{
$user = Auth::user();
if ($user->level > $level) {
return redirect('testUrl');
}
return $next($request);
}
这会有所帮助。
编辑:2018 年 12 月 14 日
您还可以将多个变量发送到中间件。您只需要使用逗号 (,).
分隔值
Route::group(['middleware' => 'checkUserLevel:some_value_of_level, one_more_value_to_send'], function () {
// my routes
});
你将在中间件处理程序中的 $level
之后的变量中获得值 one_more_value_to_send
。
public function handle($request, Closure $next, $level, $another_value)
{
$user = Auth::user();
if ($user->level > $level) {
return redirect('testUrl');
}
return $next($request);
}
在 Laravel 6.x 你必须这样做
在你的中间件中添加代码
public function handle($request, Closure $next,$module=null,$right=null)
{
dd($module,$right);
return $next($request);
}
你的路线代码是这样的
Route::get('/department/add', 'DepartmentController@addNew')->middleware('ManualSec:abc,xyz');
In Kernel.php 在 $routeMiddleware 的部分注册你的中间件 like
'ManualSec' => \App\Http\Middleware\ManualSec::class,
在我的例子中使用 url 调用路由
http://local.pms.com:8080/department/add
结果如下:
现在您可以在中间件中编写代码了
这是我的路由组,
Route::group(['middleware' => 'checkUserLevel'], function () {
// my routes
});
这是我的中间件 checkUserLevel,
public function handle($request, Closure $next, $level)
{
$user = Auth::user();
if ($user->level > $level) {
return redirect('testUrl');
}
return $next($request);
}
我想将 $level
变量从路由组传递给中间件。
谢谢
您只需使用冒号将多个参数传递到中间件即可。像这样使用它:
Route::group(['middleware' => 'checkUserLevel:some_value_of_level'], function () {
// my routes
});
现在,您可以在 $level 变量中包含此值。
public function handle($request, Closure $next, $level)
{
$user = Auth::user();
if ($user->level > $level) {
return redirect('testUrl');
}
return $next($request);
}
这会有所帮助。
编辑:2018 年 12 月 14 日
您还可以将多个变量发送到中间件。您只需要使用逗号 (,).
分隔值Route::group(['middleware' => 'checkUserLevel:some_value_of_level, one_more_value_to_send'], function () {
// my routes
});
你将在中间件处理程序中的 $level
之后的变量中获得值 one_more_value_to_send
。
public function handle($request, Closure $next, $level, $another_value)
{
$user = Auth::user();
if ($user->level > $level) {
return redirect('testUrl');
}
return $next($request);
}
在 Laravel 6.x 你必须这样做 在你的中间件中添加代码
public function handle($request, Closure $next,$module=null,$right=null)
{
dd($module,$right);
return $next($request);
}
你的路线代码是这样的
Route::get('/department/add', 'DepartmentController@addNew')->middleware('ManualSec:abc,xyz');
In Kernel.php 在 $routeMiddleware 的部分注册你的中间件 like
'ManualSec' => \App\Http\Middleware\ManualSec::class,
在我的例子中使用 url 调用路由
http://local.pms.com:8080/department/add
结果如下:
现在您可以在中间件中编写代码了