实例详解laravel使用中间件记录用户请求日志

2022-06-19 0 399

本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于使用中间件记录用户请求日志的相关问题,包括了创建中间件、注册中间件、记录用户访问等等内容,下面一起来看一下,希望对大家有帮助。

实例详解laravel使用中间件记录用户请求日志

【相关推荐:laravel视频教程】

一、创建中间件

可以使用命令创建, 也可以直接创建

php artisan make:middleware 中间件名称(TraceRecordMiddleware)

二、注册中间件

因为不同版本的laravel注册中间价的方式不同, 这里以5.6版本为例直接在项目 bootstarp/app.php 中添加以下代码即可

$app->middleware([     App\\Http\\Middleware\\TraceRecordMiddleware::class ]);

三、记录用户访问日志

其实中间价可以理解为请求拦截器所以可以拦截用户请求前的数据, 以及用户请求后的响应数据以下为基础的中间价模版

<?phpnamespace App\\Http\\Middleware;use Illuminate\\Http\\Request;/** * Class TraceRecordMiddleware * @package App\\Http\\Middleware */class TraceRecordMiddleware{    public function handle(Request $request, \\Closure $next)    {        $response = $next($request);        return $response;    }}

四、记录用户响应前数据

你只需要记录用户访问了哪些路由, 而不关系系统返回了哪些数据的话

<?phpnamespace App\\Http\\Middleware;use App\\Model\\SystemTraceRecord;use Illuminate\\Http\\Request;/** * Class TraceRecordMiddleware * @package App\\Http\\Middleware */class TraceRecordMiddleware{    public function handle(Request $request, \\Closure $next)    {                //插入数据库日志表        SystemTraceRecord::create([            'method' => $request->getMethod(),            'secure' => $request->getScheme(),            'uri' => $request->getRequestUri(),            'port' => $request->getPort()        ]);        return $next($request);    }}

五、记录用户响应后数据

有时候你想要知道用户请求后, 系统返回了什么数据的话

<?phpnamespace App\\Http\\Middleware;use App\\Model\\SystemTraceRecord;use Illuminate\\Http\\Request;/** * Class TraceRecordMiddleware * @package App\\Http\\Middleware */class TraceRecordMiddleware{    public function handle(Request $request, \\Closure $next)    {        $response = $next($request);                //响应后插入数据        SystemTraceRecord::create([            'data' => json_encode($request->all(), JSON_UNESCAPED_UNICODE),            'response' => $response->getContent() ?: '',            'status' => $response->getStatusCode()        ]);        return $response;    }}

六、记录用户详情日志

有时候你需要知道是哪些用户访问的也可以直接获取session数据

<?phpnamespace App\\Http\\Middleware;use App\\Model\\SystemTraceRecord;use Illuminate\\Http\\Request;/** * Class TraceRecordMiddleware * @package App\\Http\\Middleware */class TraceRecordMiddleware{    public function handle(Request $request, \\Closure $next)    {        $response = $next($request);        $session = app('session');        SystemTraceRecord::create([            'user_id' => $session->get('user_info.id', '未知'),            'username' => $session->get('user_info.username', '未知'),            'method' => $request->getMethod(),            'secure' => $request->getScheme(),            'uri' => $request->getRequestUri(),            'response' => $response->getContent() ?: '',            'status' => $response->getStatusCode()        ]);        return $response;    }}

【相关推荐:laravel视频教程】

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

【声明:根据2013年1月30日《计算机软件保护条例》2次修订第17条规定: 为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存 储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬! 鉴于此,也希望大家按此说明研究软件!】
本站所有源码尽量保证原汁原味,如有特殊情况会作出声明及标注,网站资源不做任何二次加密(原版加密除外,不影响程序使用的不会做解密处理),方便您更好的学习参考。 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

即刻码站__国内靠谱的站长资源下载平台 php教程 实例详解laravel使用中间件记录用户请求日志 https://www.jike1995.com/37901.html

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务