laravel-----中间件小记

文章来源https://www.insp.top/article/7

 

什么叫中间件:

是在请求到处理逻辑之间的一个中间过程,一般用作前置和后置的判断、验证。通过中间件我们可以在控制器里专注其本身的逻辑,就好比一个后台的控制器,我只需要专注于显示用户列表或者文章列表、去处理添加的文章等等,而不需要关注访问者是否是合法的后台管理员,验证权限的工作,应该交由中间件。通过中间件验证就会正常处理,不通过就会被重定向或者其他操作。

请求--->中间件--->处理逻辑---->中间件

存放位置及相关简介

放置在app/Http/Kernel.php文件中。

  • 全局中间件---------->middleware

      任何一条路由都会被应用这些中间件

  • 路由中间件---------->routeMiddleware

      使用方法:

Route::get('admin/profile', ['middleware' => 'auth', function()
{
    //
}]);

中间件的定义实例

前置中间件

class AuthMiddleware {
 
    /**
     * Run the request filter.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // 业务逻辑
        if (Auth::guest()) {
            if ($request->ajax()) {
                return response('Unauthorized!', 401);
            } else {
                return redirect()->guest('admin/login');
            }
        }
 
        view()->share('loign', true);
        //前置的操作逻辑通过代码 return $next($request),将请求导向下一个中间件,如果后面没有中间件,就会到的处理逻辑(比如控制器等)
        return $next($request);
    }
 
}

 后置中间件

 

public function handle($request, Closure $next)
    {
        $response = $next($request);
 
        // 具体的中间件逻辑代码
 
        return $response;
    }

路由组群

Route::group(['prefix' => 'admin', 'middleware' => 'authority'], function() {
    Route::get('user', function() {
        // blablabla...
    });
    Route::get('article', function() {
        // blablabla...
    });
});



Route::group(['domain' => 'bbs.yourdomain.com'], function() {
    Route::get('topic', function() {
        // blablabla...
    });
 
    Route::get('node', function() {
        // blablabla...
    });
});


Route::group(['domain' => '{username}.myapp.com'], function()
{
    Route::get('profile/{type}', function($username, $type)
    {
        //
    });
});

  

posted @ 2018-03-20 18:01  rcj_飞翔  阅读(108)  评论(0)    收藏  举报