在Laravel中,哪个中间件首先启动CSRF或AUTH

时间:2016-06-25 08:30:19

标签: php laravel-5.1 csrf-protection

根据 Laravel Website

Laravel将首先验证触发

的用户身份

Auth中间件,然后启动CSRF中间件。

但是,如果登录页面是一个钓鱼页面并且首先检查请求是否来自我们自己的网站然后检查用户身份验证是否自然,那该怎么办?

有人可以对此发光。

谢谢

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

来自Laravel Request Lifecycle page

首先将请求传递给中间件,中间件由app/Http/kernel.php中定义的每个请求处理。 CSRF中间件此时已应用。

  

HTTP内核还定义了所有HTTP中间件的列表   请求必须在应用程序处理之前通过。   这些中间件处理读写HTTP会话,   确定应用程序是否处于维护模式,验证   CSRF令牌等等。

然后请求将传递给路由器。然后路由器将强制路由特定的中间件。这意味着,此时也会应用 auth

  

应用程序启动后和所有服务提供商   已经注册,请求将被交给路由器   调度。路由器将请求发送到路由或   控制器,以及运行任何路由特定的中间件。

希望你能得到答案。

答案 1 :(得分:0)

根据laravel文档。首先应用Web中间件,然后将请求传递给其他中间件,如auth等,除非您更改它。

参考:

包含在Web中间件组中的VerifyCsrfToken中间件将自动验证请求输入中的令牌是否与会话中存储的令牌匹配。

请记住,Web中间件组由RouteServiceProvider自动应用于您的默认routes.php文件。

这是网络中间件

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
        'auth:api',
    ],
];