Maison > cadre php > Laravel > Exemple détaillé de Laravel utilisant un middleware pour enregistrer les journaux de demandes des utilisateurs

Exemple détaillé de Laravel utilisant un middleware pour enregistrer les journaux de demandes des utilisateurs

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2022-04-26 21:13:10
avant
4191 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur laravel, qui présente principalement des problèmes liés à l'utilisation d'un middleware pour enregistrer les journaux de demandes des utilisateurs, notamment la création d'un middleware, l'enregistrement d'un middleware, l'enregistrement de l'accès des utilisateurs, etc., examinons-le ensemble, j'espère cela sera utile à tout le monde.

Exemple détaillé de Laravel utilisant un middleware pour enregistrer les journaux de demandes des utilisateurs

【Recommandation associée : tutoriel vidéo laravel

1. Créer un middleware

  • Vous pouvez utiliser des commandes pour le créer, ou vous pouvez le créer directement
php artisan make:middleware 中间件名称(TraceRecordMiddleware)
Copier après la connexion

2. Enregistrez le middleware

  • Parce que différentes versions de Laravel ont différentes manières d'enregistrer le prix moyen, voici la version 5.6 à titre d'exemple
  • Ajoutez simplement le code suivant directement au projetbootstarp/app.php
$app->middleware([
     App\Http\Middleware\TraceRecordMiddleware::class
 ]);
Copier après la connexion

Trois. journaux d'accès des utilisateurs

  • En fait, le prix moyen peut être compris comme un intercepteur de requêtes
  • Il peut donc intercepter les données avant la demande de l'utilisateur, ainsi que les données de réponse après la demande de l'utilisateur
  • Le modèle de prix moyen basé sur les éléments suivants
<?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;
    }
}
Copier après la connexion

Quatre. Enregistrez les données avant la réponse de l'utilisateur

  • Vous devez uniquement enregistrer les itinéraires visités par l'utilisateur, mais pas les données renvoyées par le système
<?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);
    }
}
Copier après la connexion

5. répondu

  • Parfois, vous voulez savoir ce que le système a renvoyé après que l'utilisateur l'a demandé. Quant aux données
<?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;
    }
}
Copier après la connexion

6. Enregistrez le journal des détails de l'utilisateur

  • Parfois, vous devez savoir à quels utilisateurs ont accédé
  • Vous pouvez également obtenez directement les données de 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;
    }
}
Copier après la connexion

[Recommandations associées : tutoriel vidéo laravel]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal