laravel 拾遗 中间件

Problem

You want to add middleware to your application but don‘t know where to begin.

Solution

Create a simple middleware class.

Step 1 - Create the class

<?php namespace MyApp;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\HttpKernelInterface;

class Middleware implements HttpKernelInterface {

  protected $app;

  /**
   * Constructor
   */
  public function __construct(HttpKernelInterface $app)
  {
    $this->app = $app;
  }

  /**
   * Handle the request, return the response
   *
   * @implements HttpKernelInterface::handle
   *
   * @param  \Symfony\Component\HttpFoundation\Request  $request
   * @param  int   $type
   * @param  bool  $catch
   * @return \Symfony\Component\HttpFoundation\Response
   */
  public function handle(Request $request,
    $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
  {
    // 1) Modify incoming request if needed
    ...

    // 2) Chain the app handler to get the response
    $response = $this->app->handle($request, $type, $catch);

    // 3) Modify the response if needed
    ...

    // 4) Return the response
    return $response;
  }
}
?>

Step 2 - Register the Middleware Class

You need to do this in the register() method of a service provider.

App::middleware(‘MyApp\Middleware‘);

Alternatively you can install a simple package I created which allows you to register your middleware inapp/start/preboot.php. See Laravel-Hooks for details.

Discussion

The above class doesn‘t do anything.

But it‘s a good skeleton to start with. Obviously, you‘ll need to change the namespace and classname to fit your application.

Then you may want to try logging something to make sure it works. You can update the handle() method of your class as specified below.

// In step #1) Modify incoming request if needed

// Log to a file. Since app/start/global.php hasn‘t been hit
// yet the Log facade isn‘t set to log to a file yet. So just
// write directly to a file.
$logfile = storage_path().‘/logs/laravel.log‘;
error_log("Middleware entry\n", 3, $logfile);

// In step #3) Modify reponse if needed

// Log to a file. We‘re safe to use the Log facade now that
// it should be set up in app/start/global.php
Log::info("Middleware exit");

Now you can examine your app/storage/logs/laravel.log file to see that your middleware works.

时间: 2024-10-12 08:50:56

laravel 拾遗 中间件的相关文章

Laravel Middleware 中间件笔记

Laravel的中间件可以方便的过滤进入我们网页的请求.包括用户授权,CORS来指定流出请求的header等. 定义一个新的中间件可以使用命令: php artisan make:middleware AgeMiddleware 这条命令在app/Http/Middleware中创建AgeMiddleware类. 我们假设我们过滤所有年龄小于200的请求: <?php namespace App\Http\Middleware; use Closure; class AgeMiddleware

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之中间件

一.中间件的作用 HTTP 中间件提供了一个便利的机制来过滤进入应用的 HTTP 请求.例如,Laravel 包含了一个中间件来验证用户是否经过授权,如果用户没有经过授权,中间件会将用户重定向到登录页面,否则如果用户经过授权,中间件就会允许请求继续往前进入下一步操作. 当然,除了认证之外,中间件还可以被用来处理更多其它任务.比如:CORS 中间件可以用于为离开站点的响应添加合适的头(跨域):日志中间件可以记录所有进入站点的请求.Laravel 框架内置了一些中间件,包括维护模式中间件.认证.CS

laravel的中间件

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

laravel 加中间件的方法 防止直接打开后台

路由 routes.php Route::group(['middleware' => ['web','admin.login.login']], function () { //后台首页路由 Route::get('/admin/index/index','Admin\[email protected]'); }); kernel.php protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::c

laravel在中间件内生成的变量如何传到控制器

在中间件内获取到一个变量,如何返回到控制器中并使用这个变量! 做了个demo: // web.php Route::get('/check', '[email protected]')->middleware(App\Http\Middleware\CheckRequest::class); // Middleware/CheckRequest.php class CheckRequest { /** * Handle an incoming request. * * @param \Illum

Laravel中间件原理

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

Laravel系列之CMS系统学习 — 角色、权限配置【1】

一.后台Admin模块 后台管理是有管理员的,甚至超级管理员,所以在设计数据表的时候,就会有2个方案,一个方案是共用users数据表,添加is_admin,is_superAdmin字段来进行验证,或者将用户编到不同的组里面,另一个方案是,单独创建admins数据表来进行管理(这样前台和后台是两个事件,前台用户是没有机会操作后台相关功能的,也就是完全隔离了) 我采用第二种(实习快四个月了,跟了2个完整项目是这样~) 我在上一篇说到,我使用的是laravel-module,所以相关初始配置不再赘述

laravel5.2总结--csrf保护

CSRF攻击: CSRF 顾名思义,是伪造请求,冒充用户在站内的正常操作.我们知道,绝大多数网站是通过 cookie 等方式辨识用户身份(包括使用服务器端 Session 的网站,因为 Session ID 也是大多保存在 cookie 里面的),再予以授权的.所以要伪造用户的正常操作,最好的方法是通过 XSS 或链接欺骗等途径,让用户在本机(即拥有身份 cookie 的浏览器端)发起用户所不知道的请求. Laravel 会自动生成一个 CSRF token 给每个用户的 Session.该 t