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)
{
//
});
});

浙公网安备 33010602011771号