ApiLogs.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. namespace App\libs\middleware;
  3. use Closure;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\DB;
  6. use Symfony\Component\HttpFoundation\Response;
  7. class ApiLogs
  8. {
  9. /**
  10. * 处理传入请求。
  11. *
  12. * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
  13. */
  14. public function handle(Request $request, Closure $next): Response
  15. {
  16. $this->user = auth('api')->user();
  17. $this->userId = $this->user ? $this->user->id : 0;
  18. $data = $request->all();
  19. $names = explode('@',$request->route()->getAction()['controller']);
  20. $data = [
  21. 'token' => $request->header('token', null),
  22. 'user_id' => $this->userId ?? 0,
  23. 'url' => $request->url(),
  24. 'controller' => $names[0],
  25. 'func' => $names[1],
  26. 'method' => $request->method(),
  27. 'ip' => $request->ip(),
  28. 'params' => json_encode($data, 256),
  29. 'day' => strtotime('today'),
  30. 'created_at' => time()
  31. ];
  32. Db::table('api_logs')->insert($data);
  33. return $next($request);
  34. }
  35. }