将Auth中间件应用于所有Laravel路由

将Auth中间件应用于所有Laravel路由,laravel,laravel-5,laravel-routing,laravel-middleware,Laravel,Laravel 5,Laravel Routing,Laravel Middleware,当我在所有控制器中应用auth中间件时,除了登录和注册之外,验证所有路由的正确方法是什么?是否有一种方法可以在一个位置应用auth中间件并排除登录、注册路由?您可以在routes.php文件中应用中间件,您需要做的是将所有路由放在一个组中,并添加中间件“auth”(除了已经配置的auth::routes()),例如: Route::中间件(['first','second'])->组(函数(){ 路由::get(“/”,函数(){ //使用第一个和第二个中间件 }); 路由::get('user

当我在所有控制器中应用auth中间件时,除了登录和注册之外,验证所有路由的正确方法是什么?是否有一种方法可以在一个位置应用auth中间件并排除登录、注册路由?

您可以在routes.php文件中应用中间件,您需要做的是将所有路由放在一个组中,并添加中间件“auth”(除了已经配置的auth::routes()),例如:

Route::中间件(['first','second'])->组(函数(){
路由::get(“/”,函数(){
//使用第一个和第二个中间件
});
路由::get('user/profile',函数(){
//使用第一个和第二个中间件
});
});

更多信息可以在文档中找到:

您可以将所有经过身份验证的路由分组如下,laravel为身份验证和来宾用户提供了默认的中间件

Route::group(['middleware' => ['auth']], function () { 
    Route::get('home', 'HomeController@index');
    Route::post('save-user', 'UserController@saveUser');
    Route::put('edit-user', 'UserController@editUser');
});

以上路由名称仅为组成部分,请遵循路由和控制器的正确命名约定。还可以阅读有关中间件和路由的信息

通过将中间件添加到
RouteServiceProvider
中的路由映射中,您可以将中间件添加到整个
web.php
路由文件中

转到
app/Providers/RouteServiceProvider.php
并在
mapWebRoutes()
中,将
中间件('web')
更改为
中间件(['web','auth'))

受保护的函数mapWebRoutes()
{
路由::中间件(['web','auth'])
->名称空间($this->namespace)
->组(base_path('routes/web.php');
}
创建新方法
mapAuthRoutes()

受保护的函数mapauthrouts()
{
路由::中间件('web')
->命名空间('App\Http\Controllers\Auth')
->组(基本路径('routes/auth.php');
}
映射它:

公共功能映射()
{
$this->mapAuthRoutes();//mapWebRoutes();
...
}
routes
文件夹中创建一个
auth.php
文件,然后粘贴以下内容(并删除不需要的内容):


真正的问题-为什么需要添加mapAuthRoutes()?请说明。@quinny您不必创建新函数
mapAuthRoutes
,如果愿意,您可以将路由组添加到
mapWebRoutes
函数中?只要它被映射,你想怎么做就取决于你自己。如果未映射,它将不会出现在
artisan route:list
上,也不会工作。对我来说,这种添加它的方法更干净?:)