自定义laravel中间件

  • 2018-03-14
  • 0
  • 0

前言:laravel中间件对开发项目做一些特殊操作非常有帮助,比如验证用户是否合法,校验一下参数是否正确等,今天就来讲一讲在laravel中如何自定义middleware中间件

使用命令创建中间件

php artisan make:middleware UserCheck

创建完我们可以在UserCheck中间件类的handle方法中写自定义的操作

public function handle($request, Closure $next){

    $admin = User::where('uid', Auth::id())->first(['adminid']);
    if($admin['adminid'] != 1){
        return redirect()->route('index');
    }
    return $next($request);
}
比如上面验证用户是否为管理员,不是跳转项目首页。

接下来注册中间件,要不然是用不了的
在 App\Http\Kernel 类中注册刚刚添加的中间件
protected $routeMiddleware = [
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'UserCheck'    => \App\Http\Middleware\UserCheck::class,
];

这样就可以在其他地方使用了。
public function __construct() {
    $this->middleware('adminUserCheck');
}
验证用户是否为管理员身份。

最后,中间件有前置中间件和后置中间件的区分,主要是handle方法中代码执行的顺序不同
前置中间件
class BeforeMiddleware
{
    public function handle($request, Closure $next)
    {
        // 执行动作

        return $next($request);
    }
}
后置中间件
class AfterMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        // 执行动作

        return $response;
    }
}

评论

还没有任何评论,你来说两句吧