Laravel中间件

先谈一谈中间件的使用场景,比如路由转到一张页面,我们需要记录用户的cookie,或者检测用户的访问权限,这些操作如果全写在控制器里是不合适的,因为随着业务的扩充,控制器里的业务逻辑会越来越臃肿,难以维护,所以,不同的操作,我们分别写在各自的中间件里。我们使用artisan命令行来创建一个中间件。

1 php artisan make:middleware MyMiddleware

中间件的php文件都放在了目录\app\Http\Middleware下,大家应该注意到,中间件Middleware和控制器Controller文件夹都在Http文件夹下。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20


<?php

namespace App\Http\Middleware;

use Closure;

class MyMiddleware

{

    /**

     * Handle an incoming request.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  \Closure  $next

     * @return mixed

     */

    public function handle($request, Closure $next)

    {

        return $next($request);

    }

}

这里我们只改动handle函数来举例中间件的使用


1

2

3

4

5


public function handle($request, Closure $next)

{

        echo ‘MyMiddleware is running!‘;

        return $next($request);

}

中间件不注册是不能使用的。注册方式有以下两种,取其一即可。

第一种,Kernel.php的$middleware数组中注册,这种注册后,所有的HTTP请求都将可以启动这个中间件,特别适合用在身份认证类的功能上。


1

2

3

4


protected $middleware = [

      \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,

      \App\Http\Middleware\MyMiddleware::class,

];

第二种,Kernel.php的$routeMiddleware数组中注册,这种注册方式适用于部分指定页面才可以启动这个中间件。


1

2

3

4

5

6

7

8


protected $routeMiddleware = [

        ‘auth‘ => \App\Http\Middleware\Authenticate::class,

        ‘auth.basic‘ => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,

        ‘guest‘ => \App\Http\Middleware\RedirectIfAuthenticated::class,

        ‘throttle‘ => \Illuminate\Routing\Middleware\ThrottleRequests::class,

        

    ‘mymiddleware‘=>\App\Http\Middleware\MyMiddleware::class,

];

请注意,注册中间件,不是等于启动中间件,注册仅仅是让你能用而已,但是具体调用还是要另外写的。

如果你的View有对应的Controller,就直接在Controller里写。


1

2

3

4

5

6

7

8

9

10


class MyController extends Controller

{

    public function index()

    {

        $this->middleware(‘MyMiddleware‘);

                //你也可以继续使用其他中间件

        

        return View(‘welcome‘);

    }

}

如果路由里直接绑定了一个匿名函数,可以修改routes.php


1

2

3


Route::get(‘/index‘,[‘middleware‘=>‘mymiddleware‘,function(){

    return ‘hello world‘;

}]);

  

  

  

时间: 2024-08-26 15:05:12

Laravel中间件的相关文章

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

laravel中间件 middleware

要创建一个新的中间件,则可以使用 make:middleware 这个 Artisan 命令: 此命令将会在 app/Http/Middleware 目录内设定一个名称为 CheckAge 的类.在这个中间件内我们只允许请求的年龄 age 变量大于 200 时才能访问路由,否则,我们会将用户重定向到首页「home」这个 URI 上. 如你所见,若是 age 小于 200,中间件将会返回 HTTP 重定向给用户端,否则,请求将会进一步传递到应用程序.只需调用带有$request的$next方法,即

laravel 中间件的使用

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

Laravel表单篇----request请求,session存储,response响应以及中间件

请求Request 取值(传入参数Request $request) $request -> input('name');(请求name值) $request -> input('sex', '未知');(也可以请求未被定义的参数) $request -> all();(得到所有请求值) 判断取值类型 $request -> method();(判断请求类型) $request -> isMethod('GET');(判断是否为get请求) $request -> aj

Laravel 使用中间件进行权限控制

Laravel 使用中间件进行权限控制 飞凡的陀螺 关注 2018.01.24 17:45 字数 264 阅读 1138评论 0喜欢 1 先看 文档Laravel 中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求.这里实现一个只有admin角色才能访问特定路由的功能 新建middlewarephp artisan make:middleware MustBeAdmin 打开生成的 \app\Http\Middleware\MustBeAdmin.php 修改handle方法关于hasR

laravel的中间件

laravel中间件的使用 laravel内置了一个中间件来验证用户是否经过认证,如果用户没有经过认证,中间件会将用户重定向到登录页面,否则如果用户经过认证,中间件就会允许请求继续往前进入下一步操作. 当然,除了认证之外,中间件还可以被用来处理更多其它任务.比如:CORS 中间件可以用于为离开站点的响应添加合适的头(跨域):日志中间件可以记录所有进入站点的请求. Laravel框架自带了一些中间件,包括认证.CSRF 保护中间件等等.所有的中间件都位于 app/Http/Middleware目录

Laravel 权限管理总结(二)

生成5张表 User     roles     permissions       user_role   role_permissions (两张多对多) 在模型中建立关联 $user ->roles()->attach($role); $role->permission()->attach($role); 中间件Middleware Laravel 中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求 php artisan make:middleware MustBe

Laravel-表单篇-controller

(慕课网_轻松学会Laravel-表单篇_天秤vs永恒老师_http://www.imooc.com/learn/699) Controller 1.Controller-Request 1 //Request 2 public function request1(Request $request){ 3 //1.取值 4 // return $request->input('name','未知'); 5 //判断有没有sex 6 if($request->has('sex')){ 7 ech