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利用header函数实现文件下载时直接提示保存
Nov 12 PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 PHP
PHP可变函数学习小结
Nov 29 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
PHP类相关知识点实例总结
Sep 28 PHP
thinkPHP5.0框架模块设计详解
Mar 18 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 PHP
thinkPHP框架RBAC实现原理分析
Feb 01 PHP
PHP加MySQL消息队列深入理解
Feb 27 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
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
php面向对象值单例模式
2016/05/03 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
javascript 对象的定义方法
2007/01/10 Javascript
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
客户端js判断文件类型和文件大小即限制上传大小
2013/11/20 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
[10:21]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster 选手采访
2021/03/11 DOTA
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
Python单链表简单实现代码
2016/04/27 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
python定义类的简单用法
2020/07/24 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
期末自我鉴定
2014/02/02 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
导游词开场白
2015/01/31 职场文书
小学安全工作总结2015
2015/05/18 职场文书
学校教学工作总结2015
2015/05/19 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python