Laravel中间件
来源:互联网 发布:陆羽茶经经典句子一知 编辑:程序博客网 时间:2024/06/05 19:47
先谈一谈中间件的使用场景,比如路由转到一张页面,我们需要记录用户的cookie,或者检测用户的访问权限,这些操作如果全写在控制器里是不合适的,因为随着业务的扩充,控制器里的业务逻辑会越来越臃肿,难以维护,所以,不同的操作,我们分别写在各自的中间件里。我们使用artisan命令行来创建一个中间件。
1
php artisan
make
:middleware MyMiddleware
中间件的php文件都放在了目录\app\Http\Middleware下,大家应该注意到,中间件Middleware和控制器Controller文件夹都在Http文件夹下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
namespace
App\Http\Middleware;
use
Closure;
class
MyMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public
function
handle(
$request
, Closure
$next
)
{
return
$next
(
$request
);
}
}
这里我们只改动handle函数来举例中间件的使用
1
2
3
4
5
public
function
handle(
$request
, Closure
$next
)
{
echo
'MyMiddleware is running!'
;
return
$next
(
$request
);
}
中间件不注册是不能使用的。注册方式有以下两种,取其一即可。
第一种,Kernel.php的$middleware数组中注册,这种注册后,所有的HTTP请求都将可以启动这个中间件,特别适合用在身份认证类的功能上。
1
2
3
4
protected
$middleware
= [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::
class
,
\App\Http\Middleware\MyMiddleware::
class
,
];
第二种,Kernel.php的$routeMiddleware数组中注册,这种注册方式适用于部分指定页面才可以启动这个中间件。
1
2
3
4
5
6
7
8
protected
$routeMiddleware
= [
'auth'
=> \App\Http\Middleware\Authenticate::
class
,
'auth.basic'
=> \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::
class
,
'guest'
=> \App\Http\Middleware\RedirectIfAuthenticated::
class
,
'throttle'
=> \Illuminate\Routing\Middleware\ThrottleRequests::
class
,
'mymiddleware'
=>\App\Http\Middleware\MyMiddleware::
class
,
];
请注意,注册中间件,不是等于启动中间件,注册仅仅是让你能用而已,但是具体调用还是要另外写的。
如果你的View有对应的Controller,就直接在Controller里写。
1
2
3
4
5
6
7
8
9
10
class
MyController
extends
Controller
{
public
function
index()
{
$this
->middleware(
'MyMiddleware'
);
//你也可以继续使用其他中间件
return
View(
'welcome'
);
}
}
如果路由里直接绑定了一个匿名函数,可以修改routes.php
1
2
3
Route::get(
'/index'
,[
'middleware'
=>
'mymiddleware'
,
function
(){
return
'hello world'
;
}]);
阅读全文
0 0
- laravel 中间件
- Laravel中间件
- laravel中间件
- laravel中间件
- laravel中间件
- Laravel中间件
- Laravel中间件
- Laravel中间件
- laravel系列5-- 中间件
- laravel - 中间件使用
- 205 laravel 中间件实现
- laravel中间件源码分析
- Laravel 中间件建立使用
- Laravel中间件实现原理
- Laravel中间件实现原理
- Laravel Middleware 中间件
- laravel--(自定义中间件)
- Laravel基础-中间件
- Maven中的几个重要概念(二):lifecycle, phase and goal
- Laravel生命周期
- 统计学习方法笔记四---支持向量机
- 关于《Global contrast based salient region detection》环境配置
- linux驱动LCD对对程序之层次分析与框架
- Laravel中间件
- PAT(乙级)1004
- android- API 级别
- Laravel使用Seeder自动填充数据
- 动态规划实例(七):01背包问题最大价值
- Defining Python Source Code Encodings定义python源代码的编码
- 九度 题目1352:和为S的两个数字
- 数组与指针的区别
- iOS开发进阶