Laravel框架中简单使用中间件
来源:互联网 发布:it培训机构排名 编辑:程序博客网 时间:2024/05/17 16:44
简介
HTTP 中间件提供一个方便的机制来过滤进入应用程序的 HTTP 请求,例如,Laravel 默认包含了一个中间件来检验用户身份验证,如果用户没有经过身份验证,中间件会将用户导向登录页面,然而,如果用户通过身份验证,中间件将会允许这个请求进一步继续前进。
当然,除了身份验证之外,中间件也可以被用来执行各式各样的任务,CORS 中间件负责替所有即将离开程序的响应加入适当的响应头,一个日志中间件可以记录所有传入应用程序的请求。 Laravel 框架已经内置一些中间件,包括维护、身份验证、CSRF 保护,等等。所有的中间件都位于 app/Http/Middleware 目录内。
建立中间件
要建立一个新的中间件,可以使用 make:middleware 这个 Artisan 命令:
php artisan make:middleware privilege(中间件名称)
此命令将会 在 app/Http/Middleware 目录内置立一个名称为 privilege的类。在这个中间件内我们只允许 年龄 大于 200 的才能访问路由,否则,我们会将用户重新导向 「home」 的 URI 。
<?php
namespace App\Http\Middleware;
use Closure;
class privilege{
/**
*Handle an incoming request.
*
*@param \Illuminate\Http\Request $request
*@param \Closure $next
*@return mixed
*/
public function handle($request, Closure $next) {
if ($request->input('age') < 200) {
return redirect('home');
}
return$next($request);
}
}
如你所见,若是 年龄 小于 200 ,中间件将会返回 HTTP 重定向给客户端,否则,请求将会进一步传递到应用程序。只需调用带有 $request 的$next 方法,即可将请求传递到更深层的应用程序(允许跳过中间件) HTTP 请求在实际碰触到应用程序之前,最好是可以层层通过许多中间件,每一层都可以对请求进行检查,甚至是完全拒绝请求。
注册中间件
全局中间件
若是希望中间件被所有的 HTTP 请求给执行,只要将中间件的类加入到 app/Http/Kernel.php 的 $middleware 属性清单列表中。
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
];
/**
* The application's route middleware.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'privilege' => \App\Http\Middleware\privilege::class,
];
}
指派中间件给路由
如果你要指派中间件给特定的路由,你得先将中间件在 app/Http/Kernel.php 配置一个键值,默认情况下,这个文件内的 $routeMiddleware 属性已包含了 Laravel 目前配置的中间件,你只需要在清单列表中加上一组自定义的键值即可。 中间件一旦在 HTTP kernel 文件内被定义,你即可在路由选项内使用 middleware 键值来指派:
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
];
/**
* The application's route middleware.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'privilege' => \App\Http\Middleware\privilege::class,
];
}
- Laravel框架中简单使用中间件
- laravel框架-session简单使用
- laravel - 中间件使用
- Laravel 中间件建立使用
- Laravel框架学习(中间件)
- laravel中pipeline中间件调用
- laravel路由、中间件、控制器等简单笔记
- 在laravel框架中使用mongodb数据库
- laravel框架中使用model层
- laravel框架中使用model层
- Laravel框架中验证码的使用
- laravel框架中前端如何使用csrf
- PHP Laravel 框架学习笔记(一) 路由器 中间件 基础使用
- Laravel中简单使用Repository模式
- laravel 中间件
- Laravel中间件
- laravel中间件
- laravel中间件
- ibatis 到 MyBatis区别
- button执行frame动画响应点击事件
- AR引擎vuforia源码分析、中文注释(1)
- 关于openvpn的server.conf配置文件的参数
- 【OpenCV】VS2015与OpenCV2.4.11配置
- Laravel框架中简单使用中间件
- Oracle(入门四)
- asp.net三层架构连接Oracle 11g详解
- Hibernate(二)
- 开个博客瞧一瞧
- Android简易实战教程--第十三话《短信备份和还原~三》
- #107 Word Break
- selenium2.0报错:stale element reference: element is not attached to the page document的解决办法
- Hdu 4309Seikimatsu Occult Tonneru【最大流Dinic+暴力枚举Dfs+建图】人生难免磕磕碰碰