ApiLogs.php 1.2 KB

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