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 相关文章推荐
php格式化工具Beautify PHP小小BUG
Apr 24 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
PHP中常用的字符串格式化函数总结
Nov 19 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
Mar 04 PHP
php控制文件下载速度的方法
Mar 24 PHP
PHP添加图片水印、压缩、剪切的封装类
Aug 17 PHP
基础的WordPress插件制作教程
Nov 24 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
Dec 12 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
轻松修复Discuz!数据库
2008/05/03 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
Python3实现连接SQLite数据库的方法
2014/08/23 Python
python简单实现基数排序算法
2015/05/16 Python
python比较两个列表大小的方法
2015/07/11 Python
Python的标准模块包json详解
2017/03/13 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
详解Python字符串切片
2019/05/20 Python
python中删除某个元素的方法解析
2019/11/05 Python
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
室内设计专业学生的自我评价分享
2013/11/27 职场文书
廉政教育心得体会
2014/01/01 职场文书
战友聚会邀请函
2014/01/18 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
前台接待员岗位职责
2015/04/15 职场文书
庆祝教师节主题班会
2015/08/17 职场文书