2017-01-01 128 views
1

我有下面一行代码在我的控制器:如何在laravel中验证身份验证?

public function __construct() { 
     $this->middleware('auth'); 
} 

所以基本上运行在控制器的任何方法之前,该用户进行身份验证它检查这行代码确实是,我有一点点混乱关于这行代码虽然,我想知道的是这个属性middleware来自何处?以及如何将这个方法middleware真的包含到我的控制器中?

谢谢。

回答

1

该行将中间件应用于所有控制器方法。这个特定的中间件检查用户是否被认证。如果用户没有通过身份验证,中间件会将他重定向到某个定义的页面。

中间件为过滤进入您的应用程序的HTTP请求提供了一种方便的机制。例如,Laravel包含一个中间件,用于验证应用程序的用户是否已通过身份验证。如果用户未通过身份验证,则中间件会将用户重定向到登录屏幕。但是,如果用户通过身份验证,中间件将允许请求继续进入应用程序。

您可以在docs了解更多关于中间件的信息。

0

Middleware s列在App/Http/Kernel.php文件中。从那里你可以看到,auth使用\App\Http\Middleware\Authenticate类来检查请求。

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, 
     ]; 
    } 
} 
0

Laravel App\Http\Controllers\Controller延伸Illuminate\Routing\Controller类,其中包含的middleware方法和属性。