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


Posted in PHP onJune 06, 2018

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

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

1、创建中间件

php artisan make:middleware AdminOperationLog

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

代码如下:

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Http\Models\OperationLog;
class AdminOperationLog
{
  /**
   * Handle an incoming request.
   *
   * @param \Illuminate\Http\Request $request
   * @param \Closure $next
   * @return mixed
   */
  public function handle($request, Closure $next)
  {
    $user_id = 0;
    if(Auth::check()) {
      $user_id = (int) Auth::id();
    }
    $_SERVER['admin_uid'] = $user_id;
    if('GET' != $request->method()){
      $input = $request->all();
      $log = new OperationLog(); # 提前创建表、model
      $log->uid = $user_id;
      $log->path = $request->path();
      $log->method = $request->method();
      $log->ip = $request->ip();
      $log->sql = '';
      $log->input = json_encode($input, JSON_UNESCAPED_UNICODE);
      $log->save();  # 记录日志
    }
    return $next($request);
  }
}

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

protected $middlewareGroups = [
    'web' => [
      ...
      \App\Http\Middleware\AdminOperationLog::class,
      ...
    ],
    'api' => [
      'throttle:60,1',
      'bindings',
    ],
  ];

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

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP4实际应用经验篇(8)
Oct 09 PHP
PHP 中的批处理的实现
Jun 14 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
自己写了一个php检测文件编码的函数
Apr 21 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
Nov 29 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
Zend Framework框架路由机制代码分析
Mar 22 PHP
PHP合并数组函数array_merge用法分析
Feb 17 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
php多进程中的阻塞与非阻塞操作实例分析
Mar 04 PHP
php实现商城购物车的思路和源码分析
Jul 23 PHP
PHP实现的curl批量请求操作示例
Jun 06 #PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
Jun 06 #PHP
Yii 访问 Gii(脚手架)时出现 403 错误
Jun 06 #PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 #PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 #PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 #PHP
PHP实现的超长文本分页显示功能示例
Jun 04 #PHP
You might like
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
用PHP读取IMAP邮件
2006/10/09 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
JS实现div居中示例
2014/04/17 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
JS实现简单打字测试
2020/06/24 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
Python中集合类型(set)学习小结
2015/01/28 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
Python列表list操作相关知识小结
2020/01/29 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
乡镇保密工作责任书
2014/07/28 职场文书
校庆团日活动总结
2014/08/28 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL