如何运作 RedirectIfAuthenticated.php?

How works RedirectIfAuthenticated.php?

I 运行 php artisan make:auth in Laravel 5.6 众所周知,这确实生成了一个 HomeController.php 文件。

里面:

public function index(){ return view('home'); }

Route::get('/home', 'HomeController@index')->name('home');路由定义到web.php.

但是 http://homestead.test/home 由于 RedirectIfAuthenticated.php 中间件,URI 重定向到 http://homestead.test/login。因此 RedirectIfAuthenticated.php 作为全局中间件而不是路由中间件,尽管在 $routeMiddleware 属性 中定义 Kernel.php.

为什么会这样?

我不知道什么?

如果您查看创建的控制器的构造函数,它正在使用 auth 中间件。

$this->middleware('auth');

如果您在 $routeMiddleware 查看您的 Kernel.php

'auth' => \Illuminate\Auth\Middleware\Authenticate::class,

这根本不涉及RedirectIfAuthenticated。这会将任何已经通过身份验证的用户重定向到路由之外。 auth 中间件将所有未通过身份验证的人重定向到路由,'login'。