首页 > 开发 > PHP > 正文

Laravel框架实现利用中间件进行操作日志记录功能

2024-05-04 21:50:09
字体:
来源:转载
供稿:网友

本文实例讲述了Laravel框架实现利用中间件进行操作日志记录功能。分享给大家供大家参考,具体如下:

利用中间件进行操作日志记录过程:

1、创建中间件

php artisan make:middleware AdminOperationLog

2、生成了文件./app/Http/Middleware/AdminOperationLog.php

代码如下:

  1. <?php 
  2. namespace App/Http/Middleware; 
  3. use Closure; 
  4. use Illuminate/Http/Request; 
  5. use Illuminate/Support/Facades/Auth; 
  6. use App/Http/Models/OperationLog; 
  7. class AdminOperationLog 
  8.   /** 
  9.    * Handle an incoming request. 
  10.    * 
  11.    * @param /Illuminate/Http/Request $request 
  12.    * @param /Closure $next 
  13.    * @return mixed 
  14.    */ 
  15.   public function handle($request, Closure $next
  16.   { 
  17.     $user_id = 0; 
  18.     if(Auth::check()) { 
  19.       $user_id = (int) Auth::id(); 
  20.     } 
  21.     $_SERVER['admin_uid'] = $user_id
  22.     if('GET' != $request->method()){ 
  23.       $input = $request->all(); 
  24.       $log = new OperationLog(); # 提前创建表、model 
  25.       $log->uid = $user_id
  26.       $log->path = $request->path(); 
  27.       $log->method = $request->method(); 
  28.       $log->ip = $request->ip(); 
  29.       $log->sql = ''
  30.       $log->input = json_encode($input, JSON_UNESCAPED_UNICODE); 
  31.       $log->save();  # 记录日志 
  32.     } 
  33.     return $next($request); 
  34.   } 

3、中间件引入 ./app/Http/Kernel.php

  1. protected $middlewareGroups = [ 
  2.     'web' => [ 
  3.       ... 
  4.       /App/Http/Middleware/AdminOperationLog::class
  5.       ... 
  6.     ], 
  7.     'api' => [ 
  8.       'throttle:60,1'
  9.       'bindings'
  10.     ], 
  11.   ]; 

此时进行操作时就会记录操作日志。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表