Middleware can filter requests. Here you can use middleware to verify whether the user is logged in. If the user is logged in, you can continue to perform the original operation. If you are not logged in, you will be redirected. Go to the login page and let the user log in first.
1. Define middleware
php artsian
make:middleware Command to create middleware, file path:
app\Http\Middleware\CheckToken.php
php artisan make:middleware CheckToken
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class CheckToken { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle(Request $request, Closure $next) { //在这里做一个判断,如果token不是 'my-secret-token',则重定向 if ($request->input('token') !== 'my-secret-token') { return redirect('home'); } return $next($request); } }
2. Classification of middleware
Pre-middleware
<?php namespace App\Http\Middleware; use Closure; class BeforeMiddleware { public function handle($request, Closure $next) { ... // 应用请求之前执行一些任务 return $next($request); } }
<?php namespace App\Http\Middleware; use Closure; class AfterMiddleware { public function handle($request, Closure $next) { $response = $next($request); // 应用请求之后执行一些任务 return $response; } }
//在app\Http\Kernel.php中的$middleware内添加 protected $middleware = [ // \App\Http\Middleware\TrustHosts::class, .... .... \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, //这是之前定义的 \App\Http\Middleware\CheckToken::class, ];
//在app\Http\Kernel.php中的$middlewareGroups内添加 protected $middlewareGroups = [ 'web' => [ .... ], 'api' => [ .... ], 'diy' =>[ //可以在web组和api组中添加,也可以自己diy一个 ] ]; //路由中使用,RouteServiceProvider 默认将 web 和 api 中间件组自动应用到 routes/web.php 和 routes/api.php Route::get('/u', function () { })->middleware('diy');
protected $routeMiddleware = [ ..., 'myself'=> \App\Http\Middleware\CheckToken::class, ]; Route::get('/user', function () { // })->middleware('myself');
The above is the detailed content of Guardian of laravel world-middleware. For more information, please follow other related articles on the PHP Chinese website!