首頁  >  文章  >  php框架  >  實例詳解laravel使用中間件記錄使用者請求日誌

實例詳解laravel使用中間件記錄使用者請求日誌

WBOY
WBOY轉載
2022-04-26 11:53:014041瀏覽

本篇文章為大家帶來了關於laravel的相關知識,其中主要介紹了關於使用中間件記錄使用者請求日誌的相關問題,包括了建立中間件、註冊中間件、記錄用戶訪問等等內容,下面一起來看一下,希望對大家有幫助。

實例詳解laravel使用中間件記錄使用者請求日誌

【相關推薦:laravel影片教學

一、建立中間件

  • 可以使用指令建立, 也可以直接建立
php artisan make:middleware 中间件名称(TraceRecordMiddleware)

二、註冊中間件

  • 因為不同版本的laravel註冊中間價的方式不同, 這裡以5.6版本為例
  • 直接在項目 bootstarp/app.php 中加入以下程式碼即可
$app->middleware([
     App\Http\Middleware\TraceRecordMiddleware::class
 ]);

#三、記錄用戶存取日誌

  • 其實中間價可以理解為請求攔截器
  • 所以可以攔截用戶請求前的數據, 以及用戶請求後的回應數據
  • 以下為基礎的中間價模版
<?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;
    }
}

四、記錄使用者回應前資料

  • 你只需要記錄使用者存取了哪些路由, 而不關係系統回傳了哪些資料的話
<?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);
    }
}

五、記錄使用者回應後資料

  • 有時候你想要知道使用者請求後,系統回傳了什麼資料的話
<?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;
    }
}

六、記錄使用者詳情日誌

  • 有時候你需要知道是哪些使用者造訪的
  • 也可以直接取得session資料
<?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;
    }
}

【相關推薦:laravel影片教學

以上是實例詳解laravel使用中間件記錄使用者請求日誌的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除