前言
Middleware 中间件是所有主流开发框架中都必不可少的一个核心组成部分,它给开发框架带来了更大的灵活性,让代码变得更为简洁,组织得更为合理。其类似与管道的过滤机制,让其可以按照我们自己的要求设定 Middleware 的过滤顺序,这样我们就可以对请求进行判断分类,将不同的请求导向不同的处理逻辑,而且我们也可以对用户进行判断,这样进一步做到相关权限的控制。中间件编程也是编程史上一个里程碑一样的重要节点,它极大的改变了人们对框架的设计理念和编程的方式。Laravel Middleware 是中间件机制实现非常出色的一个代表。学会了Middleware,编程将变得非常有艺术气息。
Kernel.php文件解读
middleware总管理区域,所有middleware在这里进行管理
app\Http\Kernel.php
所有请求都会经过这里处理
protected $middleware
中间件群组
protected $middlewareGroups
注册个人中间件
protected $routeMiddleware
‘中间件名称’ => 映射的中间件
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
如何创建自己的Middleware中间件
实现前后端分离: 1、如果是管理员直接跳转到管理员相关页面 2、如果不是管理员直接跳转到home页面
生成相关表格,并加入role字段
php artisan migrate
生成脚手架系统,并创建frontend、admin两个测试用户
php artisan make:auth
创建检查用户权限的中间件
php artisan make:middleware RoleCheck
app\Http\Middleware\RoleCheck.php中处理用户登录逻辑
public function handle($request, Closure $next)
{
//判断当前登录用户是否是admin,不是则跳转到更目录
if($request->user()->role !== 'admin'){
return redirect('/');
}
return $next($request);//当前的请求处理完成后扔给下个处理者
}
在app\Http\Kernel.php对中间件进行注册
protected $routeMiddleware = [
'role' => \App\Http\Middleware\RoleCheck::class,
];
中间件使用
//检查用户是否登录使用auth中间件,用户是否是admin使用role中间件
Route::middleware(['auth','role'])->prefix('admin')->group(function (){
Route::get('dashboard', function(){
return 'Dashboard Admin Page';
});
});
分别使用用户frontend和admin登录后访问路由地址http://http.test/admin/dashboard查看不同的处理逻辑效果
|