實例詳解laravel使用中間件記錄使用者請求日誌
Apr 26, 2022 am 11:53 AM
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([ 'method' => $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([ 'data' => 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('session'); SystemTraceRecord::create([ 'user_id' => $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中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)