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 相关文章推荐
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
Jan 15 PHP
PHP中常用数组处理方法实例分析
Aug 30 PHP
php 禁止页面缓存输出
Jan 07 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 PHP
Laravel基础-关于引入公共文件的两种方式
Oct 18 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
php图像验证码生成代码
2017/06/08 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
python编程嵌套函数实例代码
2018/02/11 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
python解决字符串倒序输出的问题
2018/06/25 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
求职自荐信
2013/12/14 职场文书
银行员工职业规划范文
2014/01/21 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
校运会通讯稿
2015/07/18 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
导游词之神仙居景区
2019/11/15 职场文书
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL