laravel中间件 middleware

要创建一个新的中间件,则可以使用 make:middleware 这个 Artisan 命令:

此命令将会在 app/Http/Middleware 目录内设定一个名称为 CheckAge 的类。在这个中间件内我们只允许请求的年龄 age 变量大于 200 时才能访问路由,否则,我们会将用户重定向到首页「home」这个 URI 上。

如你所见,若是 age 小于 200,中间件将会返回 HTTP 重定向给用户端,否则,请求将会进一步传递到应用程序。只需调用带有$request的$next方法,即可将请求传递到更深层的应用程序(相当于允许通过中间件)。

HTTP 请求在实际碰触到应用程序之前,最好是可以层层通过中间件。每一层都可以对请求进行检查,甚至完全拒绝请求。

注册中间件#

全局中间件#

若是希望每个 HTTP 请求都经过一个中间件,只要将中间件的类加入到app/Http/Kernel.php的$middleware属性清单列表中。

为路由指派中间件#

如果你要指派中间件给特定路由,你得先在app/Http/Kernel.php给中间件设置一个好记的键,默认情况下,这个文件内的$routeMiddleware属性已包含了 Laravel 目前设置的中间件,你只需要在清单列表中加上一组自定义的键即可。

中间件一旦在 HTTP kernel 文件内被定义,即可在路由选项内使用 middleware 键值指定:

为路由指定多个中间件:

你可以使用完整类名作为路由指派中间件。

中间件组#

有时候你可能想要通过指定一个键名的方式将相关中间件分到一个组里面,从而更方便将其分配到路由中,这可以通过使用 HTTP Kernel 的$middlewareGroups实现。

Laravel 自带了开箱即用的web和api两个中间件组以包含可以应用到 Web UI 和 API 路由的通用中间件:

中间件组可以被分配给路由和控制器动作,使用和单个中间件分配同样的语法。再次申明,中间件组的目的只是让一次分配给路由多个中间件的实现更加简单:

{tip} 默认情况下,RouteServiceProvider 已经为 routes.php 文件指定了 web 中间件组。

例子:

创建中间件

php artisan make:middleware AdminMiddleware

中间件编写登录验证

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

        if( !session()->get(‘userInfo‘) ){
            return redirect(‘admin/login‘);
        }
        return $next($request);
    }

注册中间件  (Kernel.php)

protected $middlewareGroups = [
        ‘web‘ => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \Illuminate\Session\Middleware\StartSession::class,
        ],

        ‘api‘ => [
            ‘throttle:60,1‘,
            ‘bindings‘,
        ],
    ];

使用:

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\BaseController;
use Illuminate\Http\Request;
//use DB;
use Illuminate\Support\Facades\DB;
use App\Model\admin;

class IndexController extends BaseController
{
    public function __construct(){

        $this->middleware(‘admin.auth‘)->except([‘login‘,‘signin‘]);
    }}

原文地址:https://www.cnblogs.com/jasonLiu2018/p/11793455.html

时间: 2024-11-10 13:12:19

laravel中间件 middleware的相关文章

Laravel中间件原理

本文和大家分享的主要是Laravel中间件原理相关内容,一起来看看吧,希望对大家学习Laravel有所帮助. Laravel 中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求, 如 ValidatePostSize 用来验证 POST 请求体大小. ThrottleRequests 用于限制请求频率等. 那Laravel的中间件是怎样工作的呢? 启动流程 再说 Laravel 中间件前,我们先来理一理 laravel 的启动流程 首先,入口文件 index.php 加载了 autolo

Laravel 中间件

Laravel 中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求 1.使用中件间 在路由器中使用中间件: Route::get('/', '[email protected]')->middleware('auth'); //使用多个中间件 Route::get('/', function () { // })->middleware('first', 'second'); //指定类名 Route::get('admin/profile', function () { // })-

中间件(Middleware)

中间件(Middleware) ASP.NET Core开发,开发并使用中间件(Middleware). 中间件是被组装成一个应用程序管道来处理请求和响应的软件组件. 每个组件选择是否传递给管道中的下一个组件的请求,并能之前和下一组分在管道中调用之后执行特定操作. 具体如图: 开发中间件(Middleware) 今天我们来实现一个记录ip 的中间件. 1.新建一个asp.net core项目,选择空的模板. 然后为项目添加一个 Microsoft.Extensions.Logging.Conso

ASP.NET Core 开发-中间件(Middleware)

参考页面: http://www.yuanjiaocheng.net/ASPNET-CORE/core-razor-layout.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-view-start.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-import-view.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-razor-tag

ASP.NET Core中间件(Middleware)实现WCF SOAP服务端解析

ASP.NET Core中间件(Middleware)进阶学习实现SOAP 解析. 本篇将介绍实现ASP.NET Core SOAP服务端解析,而不是ASP.NET Core整个WCF host. 因为WCF中不仅仅只是有SOAP, 它还包含很多如消息安全性,生成WSDL,双工信道,非HTTP传输等. ASP.NET Core 官方推荐大家使用RESTful Web API的解决方案提供网络服务. SOAP 即 Simple Object AccessProtocol 也就是简单对象访问协议.

Laravel中间件

先谈一谈中间件的使用场景,比如路由转到一张页面,我们需要记录用户的cookie,或者检测用户的访问权限,这些操作如果全写在控制器里是不合适的,因为随着业务的扩充,控制器里的业务逻辑会越来越臃肿,难以维护,所以,不同的操作,我们分别写在各自的中间件里.我们使用artisan命令行来创建一个中间件. 1 php artisan make:middleware MyMiddleware 中间件的php文件都放在了目录\app\Http\Middleware下,大家应该注意到,中间件Middleware

Django框架之中间件MiddleWare

Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出.中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性.我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预. 中间件的原理其实就是定义了一个装饰器,但是这个装饰器可以对整个项目中的所有方法进行装饰: 我们可以通过中间件,对请求对象和响应对象进行相应的干预操作. 实现中间件的流程: 1.在子应用中编写一个middleware.p

Laravel5.1 中间件-middleware

中间件的主要功能是在达到最终请求动作前对请求进行过滤和处理. 中间件在Laravel中有着广泛的应用,比如用户认证.日志.维护模式.开启Session.从Session中获取错误信息,以及CSRF验证,等等. 中间件的所在目录:\app\Http\Middleware.里面有一些默认的middleware 创建自己的middleware 创建middleware非常简单,我们打开终端,cd到项目目录下执行以下命令即可: php artisan make:middleware TestMiddle

laravel 中间件的使用

1.中件间保存目录:app/Http/Middleware 2.自定义中间件: (1)  php  artisan  make:middleware  [NameMiddleware]// 生成中件间类模板 (2) 在app/Http/Middleware在打开创建的中件间类,在handle方法实现自己的逻辑.// 参数一是请求,参数二是下一个中间件,可增加其它所需参数到参数二后. (3) 将自己的处理逻辑写在 return $next($request) 之后,表示该中间件在请求之后执行,反之