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 相关文章推荐
用session做客户验证时的注意事项
Oct 09 PHP
php用数组返回无限分类的列表数据的代码
Aug 08 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
typecho插件编写教程(六):调用接口
May 28 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
Nov 09 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
php装饰者模式简单应用案例分析
Oct 23 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 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
PHP内存缓存Memcached类实例
2014/12/08 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
JS回调函数深入理解
2019/10/16 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
Python多进程fork()函数详解
2019/02/22 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
Django中提示消息messages的设置方式
2019/11/15 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
Python装饰器用法与知识点小结
2020/03/09 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
创建绿色学校先进个人材料
2014/08/20 职场文书
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python