laravel5中间件的使用例子

来源:互联网 发布:mac自带抠图 编辑:程序博客网 时间:2024/05/16 19:56
首先创建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');
});



1 0