Laravel用户行为记录

1、创建后端API Endpoint,定义路由

Route::post('/track', [TrackingController::class, 'store'])->middleware(['auth:sanctum', 'throttle:60,10'])->name('api.track');

增加auth:sanctum验证,确保只有授权用户访问。

增加throttle,60秒最多10次处理。

2、app/Http/Controllers目录下创建TrackingController

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Auth;

class TrackingController extends Controller
{
    public function store(Request $request)
    {
        $data = $request->validate([
            'user_id' => 'nullable|integer',
            'action' => 'required|string',
            'details' => 'nullable|array',
        ]);

//进一步验证用户ID与已登录用户匹配
    if (Auth::check() && Auth::id() !== $request->user_id) {
        // 用户ID不匹配,返回错误或忽略请求
        return response()->json(['status' => 'error', 'message' => 'Invalid user ID.'], 401);
    }

        // 记录行为数据到日志
        Log::info("User Action", [
            'user_id' => $request->user_id,
            'action' => $request->action,
            'details' => $request->details,
        ]);

        // 或者存入数据库
        // $tracking = new Tracking();
        // $tracking->user_id = $request->user_id;
        // $tracking->action = $request->action;
        // $tracking->details = json_encode($request->details);
        // $tracking->save();

        return response()->json(['status' => 'success']);
    }
}

3、前端实现追踪脚本

// 假设jQuery环境
$(document).ready(function () {
    $('body').on('click', '[data-track]', function (event) {
        const element = $(this);
        const action = element.data('track');
        const userDetails = { user_id: {{ Auth::check() ? Auth::id() : 'null' }} }; // 如果用户已登录,获取用户ID

        $.ajax({
            url: "{{ route('api.track') }}",
            type: "POST",
            data: JSON.stringify({ action, userDetails }),
            contentType: "application/json",
            success: function (response) {
                // 处理成功响应
            },
            error: function (xhr, status,error) {
                // 处理错误响应
                let errorMessage = xhr.responseJSON.message || '请求出错,请稍后再试。';
                console.error('追踪行为数据时发生错误:', error);
                alert(errorMessage);

            },
        });
    });
});

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值