注册Laravel中间件


Registering Laravel middleware

刚开始进入laravel,在迁移我的普通php以使用它时遇到了重大问题。

我创建了一个middleware

<?php
namespace App'Http'Middleware;
use Closure;
use Session;
class QwickAuthCheck
{
    /**
     * Handle an incoming request.
     *
     * @param  'Illuminate'Http'Request  $request
     * @param  'Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($request->session()->has('qwick')) {
            //
            return redirect('home');
        }
        return $next($request);
    }
}

我正在检查是否已设置会话。home是我在routes.php 中的一条路线

Route::get('/', 'WebController@home')->name('home');

我是这样在kernel.php中注册的;

protected $routeMiddleware = [
    ........
    ........
    'qwickAuth' => 'App'Http'Middleware'QwickAuthCheck::class,
];

现在我想将middleware应用于

Route::get('login', 'WebController@login');

我该怎么做?

我试过了;

Route::get('login', ['middleware' => ['qwickAuth'], 'WebController@login');

Laravel在他们的网站上有很多文档,但出于某种原因,他们所有的代码都没有给出人们如何使用这个框架的片段。在中间件文档中,他们给出的只是以下内容;

Route::get('admin/profile', ['middleware' => 'auth', function () {
    //
}]);

我如何知道如何使用它,因为我的路线中没有function

虽然Marcins的结果有效,但也可以这样做

Route::get('login', 'WebController@login')->middleware(['qwickAuth']);

您应该使用:

Route::get('login', ['middleware' => ['qwickAuth'], 'uses' =>'WebController@login']);

这里有uses的路由示例:https://laravel.com/docs/5.2/routing#named-路由