我的控制器中有以下代码行:
public function __construct() {
$this->middleware('auth');
}
我想知道这行代码的作用;是否在运行控制器中的任何方法之前检查用户是否经过身份验证?我对这行代码有点困惑;我想知道的是这个属性middleware
将在何处形成?这个方法middleware
如何真正包含在我的控制器中?
答案 0 :(得分:1)
此行将中间件应用于所有控制器方法。此特定中间件检查用户是否已通过身份验证。如果用户未经过身份验证,则中间件会将其重定向到某个已定义的页面。
中间件提供了一种方便的机制,用于过滤进入应用程序的HTTP请求。例如,Laravel包含一个中间件,用于验证应用程序的用户是否经过身份验证。如果用户未经过身份验证,则中间件会将用户重定向到登录屏幕。但是,如果用户通过身份验证,则中间件将允许请求继续进入应用程序。
您可以在docs中了解有关中间件的更多信息。
答案 1 :(得分:0)
Middleware
列在App/Http/Kernel.php
文件中。从那里你可以看到,auth
使用检查请求的\App\Http\Middleware\Authenticate
类。
答案 2 :(得分:0)
YourController
扩展了Controller
类
class YourController extends Controller { }
如果您导航到Controller类,您可以找到中间件方法和属性。
vendor/laravel/framework/src/Illuminate/Routing/Controller.php
protected $middleware = [];
public function middleware($middleware, array $options = [])
{
foreach ((array) $middleware as $m) {
$this->middleware[] = [
'middleware' => $m,
'options' => &$options,
];
}
}
答案 3 :(得分:0)
Laravel App\Http\Controllers\Controller
扩展了包含Illuminate\Routing\Controller
方法和属性的middleware
类。