我在Laravel 5.6中运行php artisan make:auth
因为众所周知这确实生成了一个HomeController.php
文件。
在里面:
public function index(){
return view('home');
}
和Route::get('/home', 'HomeController@index')->name('home');
路由定义为web.php
。
但http://homestead.test/home
URI重定向到http://homestead.test/login
到期RedirectIfAuthenticated.php
中间件。所以RedirectIfAuthenticated.php
作为全局中间件而不是路由中间件,尽管在$routeMiddleware
中的Kernel.php
属性中定义。
为什么会这样?
我不知道什么?
答案 0 :(得分:1)
如果你看一下创建的控制器的构造函数,它正在使用auth
中间件。
$this->middleware('auth');
如果您在Kernel.php
处查看$routeMiddleware
:
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
这根本不涉及RedirectIfAuthenticated
。这将重定向已经过身份验证的任何用户远离路由。 auth
中间件会将未经过身份验证的所有人重定向到路由,然后登录'。