laravel-middleware中间件常用使用方法
介绍
- 中间件提供了一种方便的机制过滤进入应用程序的 HTTP 请求。例如,Laravel 包含一个中间件,验证您的应用程序的用户身份验证。如果用户未被认证,中间件会将用户重定向到登录界面。然而,如果用户通过身份验证,中间件将进一步允许请求到应用程序中。
- 当然,除了身份认证以外,还可以编写另外的中间件来执行各种任务。例如:CORS 中间件可以负责为所有离开应用的响应添加合适的头部信息;日志中间件可以记录所有传入应用的请求。
- Laravel 自带了一些中间件,包括身份验证、CSRF 保护等。所有这些中间件都位于
app/Http/Middleware
目录
定义中间件的命令:
php artisan make:middleware GetCurrentTime
该命令会在 app/Http/Middleware
目录下创建一个新的GetCurrentTime类,
下面我们来演示一下中间件的简单使用
编写一个显示时间的middleware
编写完成的中间件必须注册之后才能使用: 在app\Http\Kernel.php中注册
1.全局注册
在Kernel.php的protected $middleware中注册全局都可以使用
protected $middleware = [ \App\Http\Middleware\GetCurrentTime::class, ];
显示如下
2.使用路由进行注册使用 :
在protected $routeMiddleware中注册路由中间件
protected $routeMiddleware = [
'get_current_time'=>\App\Http\Middleware\GetCurrentTime::class, ];
显示如下:在路由后面使用链式加middleware(‘你定义的路由中间件的名称’);
结果如下
3. 在控制器中使用
在定义中的控制器中使用的Route代码
Route::get('demo','TestController@index');
class TestController extends Controller { public function __construct(){
// 排除某些方法
// return $this->middleware(['get_current_time'])->except('index');
return $this->middleware('get_current_time');
}
public function index(){
echo 'a';
}
}
显示如下