php - RedirectIfAuthenticated.php 是如何工作的?
问题描述
我php artisan make:auth
在 Laravel 5.6 中运行,因为众所周知这确实生成了一个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
.
为什么会这样?
我不知道什么?
解决方案
如果您查看创建的控制器的构造函数,它正在使用auth
中间件。
$this->middleware('auth');
如果您查看您的Kernel.php
at $routeMiddleware
:
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
这个完全不涉及RedirectIfAuthenticated
。这会将任何已经通过身份验证的用户重定向到路由之外。auth
中间件将所有未通过身份验证的人重定向到路由“登录” 。
推荐阅读
- html - 父 div 中 HTML/CSS 的水平间距
- c# - 如何覆盖整个应用程序中不同条目的渲染器?
- webpack - nativescript 6.0.1 无法运行/准备 android 应用程序
- javascript - 报告视口中可见元素的百分比 - 使用 React 报告错误值的函数
- r - 尝试在 Kaggle 内核上运行 Rmd 文件时出错
- ibm-information-server - IBM 证书存储在 Information Server 中的什么位置?
- javascript - 通过我的扩展在 Chrome 中设置代理
- javascript - Angular 类不是 Angular 模块
- d3.js - 如何阻止 d3 工具提示离开页面?
- linux - 在没有父终止的情况下处理和传播 SIGHUP 信号到子进程