首先创建2个中间件,可以使用命令
php artisan make:middleware BeforeUserMiddleware
php artisan make:middleware AfterUserMiddleware
执行这2条命令之后在文件夹app\Http\Middleware下面就会出现定义的中间件类。
这2个中间件名字比较明显一个是在动作之前一个是在动作之后,写里面的动作事件。
AfterUserMiddleware.php如下:
<?php
namespace App\Http\Middleware;
use Closure;
class AfterUserMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if($request->input('name') != 'gaoxuxu'){
echo '帐号输入错误';
echo '<a href="addUser">点击返回</a>';
exit;
}
return $next($request);
}
}
BeforeUserMiddleware.php如下:
<?php
namespace App\Http\Middleware;
use Closure;
class BeforeUserMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if($request->input('age') <=20){
echo '年龄不能小于20';
echo '<a href="addUser">点击返回</a>';
exit;
}
return $next($request);
}
}
在Kernel.php中注册中间件:protected $routeMiddleware = ['auth' => \App\Http\Middleware\Authenticate::class,'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,//加入定义的中间件'checkuser'=>\App\Http\Middleware\BeforeUserMiddleware::class,'dealuser'=>\App\Http\Middleware\AfterUserMiddleware::class,//结束'role' => Zizaco\Entrust\Middleware\EntrustRole::class,'permission' => Zizaco\Entrust\Middleware\EntrustPermission::class,'ability' => Zizaco\Entrust\Middleware\EntrustAbility::class,];创建一个控制器UserController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
/**
* 控制器
*/
class UserController extends Controller{
public function getAdduser(){
return view('show.adduser');
}
public function postAdduser(Request $request){
return \Response::json(['age'=>$request->input('age'),'name'=>$request->input('name')]);
}
}
创建一个view视图:在resources文件夹下面views里面创建一个show文件夹建立简单的视图add.blade.php:
<!DOCTYPE html>
<html>
<head>
<title>测试中间件</title>
</head>
<body>
<form action="addUser" method="post">
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
帐号:<input type="text" name="name" value="{{old('name')}}"/><br>
年龄:<input type="text" name="age" value="{{old('age')}}"/>
<input type="submit" value="提交" />
</form>
</body>
</html>
最后定义访问的路由:
Route::get('user/addUser','UserController@getAddUser');
//这个控制器直接在根目录下面,如果定义的控制器又加了一层文件夹的话可以使用namespace进行控制 Route::group(['namespace'=>'xxxxx','middleware'=>['checkuser','dealuser']]);
Route::group(['middleware'=>['checkuser','dealuser']],function(){
Route::post('user/addUser','UserController@postAdduser');
});