如何在Laravel中检查身份验证?

时间:2017-01-01 12:01:27

标签: php laravel laravel-5

我的控制器中有以下代码行:

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

我想知道这行代码的作用;是否在运行控制器中的任何方法之前检查用户是否经过身份验证?我对这行代码有点困惑;我想知道的是这个属性middleware将在何处形成?这个方法middleware如何真正包含在我的控制器中?

4 个答案:

答案 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类。