[英]How to pass variables needed in view through redirect route in 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);
}
這會有所幫助。
您還可以將多個變量發送到中間件。 您只需要使用逗號 (,) 分隔值。
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 5.1 中將參數傳遞給中間件
在 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');
在 Kernel.php 中,在 $routeMiddleware 部分注冊您的中間件,例如
'ManualSec' => \App\Http\Middleware\ManualSec::class,
通過在我的情況下使用 url 調用路由
http://local.pms.com:8080/department/add
結果是這樣的:
現在你可以在你的中間件中編碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.