Rumah >rangka kerja php >Laravel >Contoh terperinci laravel menggunakan middleware untuk merekodkan log permintaan pengguna

Contoh terperinci laravel menggunakan middleware untuk merekodkan log permintaan pengguna

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBke hadapan
2022-04-26 11:53:014165semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang laravel Ia terutamanya memperkenalkan isu berkaitan tentang menggunakan perisian tengah untuk merekodkan log permintaan pengguna, termasuk mencipta perisian tengah, mendaftarkan perisian tengah dan merekodkan akses pengguna dan kandungan lain, mari kita ambil perhatian. lihat di bawah, semoga bermanfaat untuk semua.

Contoh terperinci laravel menggunakan middleware untuk merekodkan log permintaan pengguna

[Cadangan berkaitan: tutorial video laravel]

1. Cipta perisian tengah

  • boleh dibuat menggunakan arahan, atau anda boleh menciptanya terus
php artisan make:middleware 中间件名称(TraceRecordMiddleware)

2. Perisian tengah pendaftaran

  • Kerana berbeza versi Laravel mempunyai cara yang berbeza untuk mendaftarkan harga pertengahan Di sini kita mengambil versi 5.6 sebagai contoh
  • Tambahkan kod berikut terus ke projek bootstarp/app.php
$app->middleware([
     App\Http\Middleware\TraceRecordMiddleware::class
 ]);

3. Rekod log akses pengguna

  • Malah, harga pertengahan boleh difahami sebagai pemintas permintaan
  • , jadi ia boleh memintas data sebelum permintaan pengguna, serta permintaan pengguna Data pasca respons
  • Templat harga pertengahan berdasarkan yang berikut
<?php

namespace App\Http\Middleware;

use Illuminate\Http\Request;

/**
 * Class TraceRecordMiddleware
 * @package App\Http\Middleware
 */
class TraceRecordMiddleware
{
    public function handle(Request $request, \Closure $next)
    {
        $response = $next($request);

        return $response;
    }
}

4. Rekod pra-tindak balas pengguna data

  • Anda hanya perlu merekodkan pengguna Laluan mana yang dilawati, tanpa mengira data yang dikembalikan oleh sistem
<?php

namespace App\Http\Middleware;

use App\Model\SystemTraceRecord;
use Illuminate\Http\Request;

/**
 * Class TraceRecordMiddleware
 * @package App\Http\Middleware
 */
class TraceRecordMiddleware
{
    public function handle(Request $request, \Closure $next)
    {
        
        //插入数据库日志表
        SystemTraceRecord::create([
            &#39;method&#39; => $request->getMethod(),
            'secure' => $request->getScheme(),
            'uri' => $request->getRequestUri(),
            'port' => $request->getPort()
        ]);

        return $next($request);
    }
}

5 data tindak balas

  • Kadang-kadang Jika anda ingin tahu data apa yang dikembalikan sistem selepas permintaan pengguna
<?php

namespace App\Http\Middleware;

use App\Model\SystemTraceRecord;
use Illuminate\Http\Request;

/**
 * Class TraceRecordMiddleware
 * @package App\Http\Middleware
 */
class TraceRecordMiddleware
{
    public function handle(Request $request, \Closure $next)
    {
        $response = $next($request);
        
        //响应后插入数据
        SystemTraceRecord::create([
            &#39;data&#39; => json_encode($request->all(), JSON_UNESCAPED_UNICODE),
            'response' => $response->getContent() ?: '',
            'status' => $response->getStatusCode()
        ]);

        return $response;
    }
}

6. Rekodkan log butiran pengguna

  • Kadangkala anda Jika anda perlu tahu pengguna mana yang mengakses
  • , anda juga boleh terus mendapatkan data sesi
<?php

namespace App\Http\Middleware;

use App\Model\SystemTraceRecord;
use Illuminate\Http\Request;

/**
 * Class TraceRecordMiddleware
 * @package App\Http\Middleware
 */
class TraceRecordMiddleware
{
    public function handle(Request $request, \Closure $next)
    {
        $response = $next($request);

        $session = app(&#39;session&#39;);

        SystemTraceRecord::create([
            &#39;user_id&#39; => $session->get('user_info.id', '未知'),
            'username' => $session->get('user_info.username', '未知'),
            'method' => $request->getMethod(),
            'secure' => $request->getScheme(),
            'uri' => $request->getRequestUri(),
            'response' => $response->getContent() ?: '',
            'status' => $response->getStatusCode()
        ]);

        return $response;
    }
}

[Cadangan berkaitan: tutorial video laravel]

Atas ialah kandungan terperinci Contoh terperinci laravel menggunakan middleware untuk merekodkan log permintaan pengguna. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam