사용자 요청 로그를 기록하기 위해 미들웨어를 사용하는 laravel의 자세한 예

WBOY
풀어 주다: 2022-04-26 21:13:10
앞으로
4058명이 탐색했습니다.

이 글에서는 미들웨어 생성, 미들웨어 등록, 사용자 액세스 기록 등을 포함하여 미들웨어를 사용하여 사용자 요청 로그를 기록하는 것과 관련된 문제를 주로 소개하는 laravel에 대한 관련 지식을 제공합니다. 함께 살펴보시기 바랍니다. 모두에게 도움이 될 것입니다.

사용자 요청 로그를 기록하기 위해 미들웨어를 사용하는 laravel의 자세한 예

【관련 추천 : laravel 동영상 튜토리얼

1. 미들웨어 생성

  • 명령을 사용하여 생성할 수도 있고 직접 생성할 수도 있습니다
php artisan make:middleware 中间件名称(TraceRecordMiddleware)
로그인 후 복사

2. 미들웨어 등록

  • laravel 버전마다 중간 가격을 등록하는 방법이 다르기 때문에 버전 5.6을 예로 들어보겠습니다.
  • 다음 코드를 프로젝트bootstarp/app.php
$app->middleware([
     App\Http\Middleware\TraceRecordMiddleware::class
 ]);
로그인 후 복사

Record에 직접 추가하세요. 사용자 액세스 로그

  • 사실 중간 가격은 요청 인터셉터로 이해될 수 있습니다
  • 그래서 사용자 요청 전의 데이터는 물론 사용자 요청 후의 응답 데이터도 가로챌 수 있습니다
  • 중간 가격 템플릿 기반 on the next
<?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;
    }
}
로그인 후 복사

Four. 사용자의 응답 전 데이터를 기록하세요

  • 사용자가 어떤 경로를 방문했는지만 기록하면 되고, 시스템이 반환한 데이터는 기록하지 마세요
<?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. 응답

  • 때로는 사용자가 요청한 후 시스템이 무엇을 반환했는지 알고 싶을 때가 있습니다. 데이터의 경우
<?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. 사용자 세부 정보 로그를 기록하세요

  • 어떤 사용자가 액세스했는지 알아야 할 때도 있습니다
  • 또한 할 수 있습니다 세션 데이터 직접 얻기
<?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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿