laravel中间件Middleware原理解析及实例
一、总结
一句话总结:
二、laravel中间件Middleware原理解析
1、身份中间件 实例
legend3/app/Http/Middleware/Home/User.php
这是写的中间件的代码,逻辑就是判断用户是否登录,没登录就退出
1 php
2
3 namespace App\Http\Middleware\Home;
4
5 use Closure;
6 use Auth;
7
8 class User
9 {
10 /**
11 * Handle an incoming request.
12 *
13 * @param \Illuminate\Http\Request $request
14 * @param \Closure $next
15 * @return mixed
16 */
17 public function handle($request, Closure $next)
18 {
19 //前端的登录中间件
20 //作用是用Auth::guard('user')->check()来验证用户登录,
21 //如果登录成功就进行下一步
22 //如果没有登录成功就返回到登录页
23 if(!Auth::guard('user')->check()){
24 return redirect('/login');
25 }
26 return $next($request);
27 }
28 }
legend3/app/Http/Kernel.php
这里是注册中间件,相当于给中间件取别名,使用的时候可以直接通过别名调用
1 protected $routeMiddleware = [
2 //fry
3 //后端的登录中间件注册
4 'admin.auth'=>Middleware\Admin\Admin::class,
5 //前端的登录中间件注册
6 'home.auth'=>Middleware\Home\User::class,
7
8 //
9
10 'auth' => \App\Http\Middleware\Authenticate::class,
11 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
12 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
13 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
14 'can' => \Illuminate\Auth\Middleware\Authorize::class,
15 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
16 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
17 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
18 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
19 ];
在配置文件auth中注册guard
如果使用Auth::guard(‘user’)->check()
中的guard,就需要注册guard
如果只是作为普通中间件使用,不使用guard,就不需要
例如$this->middleware(‘home.auth’)->except([‘index’,’get_video_comment’]);
使用
在各个控制器中
class VideoController extends Controller
{
public function __construct()
{
//排除'index'方法,进行中间件的验证
$this->middleware('home.auth')->except(['index','get_video_comment']);
// $this->middleware('home.auth')->except(['get_video_comment']);
}
省略若干代码...
}
如果没有登录,就会被被中间件拦截,跳转到登录页面
2、pjax中间件 实例
注册
中间件代码及位置
pjax中间件代码中的逻辑也非常简单,如果不是pjax请求或者是重定向,就不处理这个请求
否则就处理这个请求
Original: https://www.cnblogs.com/Renyi-Fan/p/15338719.html
Author: 范仁义
Title: laravel中间件Middleware原理解析及实例
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/546276/
转载文章受原作者版权保护。转载请注明原作者出处!