在Laravel 5.2中,默认情况下,Web中间件包含在所有路由中。但是,我想为我的Api路由组中的所有路由禁用此中间件,而无需在每个控制器中指定忽略Web中间件。
我不希望一起删除中间件,因为这是一个混合应用程序,为两种类型的客户端提供服务,但仍需要xsrf检查。有没有办法忽略或除了'每个路由组的中间件?
答案 0 :(得分:2)
您可以将Integer
文件与另一个文件分开。检查routes
课程。在RouteServiceProvider
方法中,添加另一行:
map
然后添加public function map(Router $router)
{
$this->mapWebRoutes($router);
// This method will register your routes which doesn't need 'web' middleware
$this->mapNoMiddlewareRoutes($router);
}
方法:
mapNoMiddlewareRoutes
}
最后,在protected function mapNoMiddlewareRoutes(Router $router)
{
$router->group([
'namespace' => $this->namespace,
], function ($router) {
require app_path('Http/no_middleware_routes.php');
});
}
文件夹中添加no_middleware_routes.php
文件。
app/Http
根据this文章,您可以使用Route::get('/foo', function () {
return ['foo' => 'bar'];
});
属性。
except
上阅读更多内容从示例中可以看出,您可以使用通配符进行路由匹配,也可以单独定义每个通配符。在内部,此数组通过$ request->运行,您可以在请求文档中找到有关该数组的更多详细信息。
答案 1 :(得分:0)
从Laravel 7.7开始,您可以使用excluded_middleware
属性,例如:
Route::group([
'prefix' => 'forgot-password',
'excluded_middleware' => ['auth'],
], function () {
Route::post('send-email', 'ForgotPasswordController@sendEmail');
Route::post('save-new-password', 'ForgotPasswordController@saveNewPassword');
});