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

WBOY
Lepaskan: 2022-04-26 21:13:10
ke hadapan
4075 orang telah melayarinya

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)
Salin selepas log masuk

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
 ]);
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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);
    }
}
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

[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!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan