ale*_*jjj 3 php laravel laravel-5.6
我有一个仅用于 ajax 路由的中间件。
// AjaxOnly Middleware class
public function handle($request, Closure $next)
{
if (!$request->ajax()) {
// dd('I\'m (condition) working as expected!');
return response()->view('layouts.app');
}
dd('I never work!');
return $next($request);
}
Run Code Online (Sandbox Code Playgroud)
这是我的路线 web.php
// Ajax only routes
Route::group(['middleware' => 'ajaxOnly'], function () {
// Work an print 'false'
// dd(Request::ajax());
// Redirect me to /login page
Route::group(['middleware' => ['auth:user']], function () {
Route::get('/', 'HomeController@index')->name('home');
});
// Authentication routes
Auth::routes();
});
Run Code Online (Sandbox Code Playgroud)
那么,有人可以解释为什么代码继续在中间件保护的闭包内运行吗?谢谢。
UPD:澄清一下 -
您可以调整中间件优先级,以确保正确的中间件以正确的顺序执行。$middlewarePriority您可以通过覆盖文件中的默认值来实现此目的Kernel.php。
/**
* The priority-sorted list of middleware.
*
* Forces the listed middleware to always be in the given order.
*
* @var array
*/
protected $middlewarePriority = [
\Illuminate\xxx\Middleware\AjaxOnly::class,
\Illuminate\xxx\Middleware\Auth::class,
];
Run Code Online (Sandbox Code Playgroud)
您可以按照源代码中的此处Illuminate\Routing\Router进行操作。$middlewarePriorty
| 归档时间: |
|
| 查看次数: |
2264 次 |
| 最近记录: |