Laravel 6 - 如何记录所有 URL 的用户访问
Laravel 6 - How to Log All URL's of User Visited
我想记录该用户访问过的所有 URL。但是没有 url 我想从我的代码中记录。这是我完成的代码,请给我一些建议。感谢和感激。
网络路由
Route::get('/{url}', 'LogController@myTestAddToLog')->where('url', '[\w\d\-]+(.*)');
日志控制器
public function myTestAddToLog()
{
\LogActivity::addToLog('My Testing Add To Log.');
}
App/Helpers LogActivity
public static function addToLog($subject)
{
$log = [];
$log['url'] = Request::fullUrl();
$log['ip'] = Request::ip();
$log['user_id'] = auth()->check() ? auth()->user()->id : 1;
LogActivityModel::create($log);
}
您需要创建一个中间件。
php artisan make:middleware AddToLog
然后,将您的代码放入中间件中。
<?php
namespace App\Http\Middleware;
use Closure;
use App\LogActivityModel;
class AddToLog
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
if(auth()->user()) {
LogActivityModel::create([
'url' => request()->fullUrl(),
'ip' => request()->ip(),
'user_id' => auth()->id(),
]);
}
return $response;
}
}
然后,在 app/Http/kernel.php
中,将您的中间件添加到 $middleware
。这将允许任何调用的 URL 触发此代码。
protected $middleware = [
...
\App\Http\Middleware\AddToLog::class,
];
请使用以下代码记录用户访问过的所有 url
Log::info(url()->full()); // For just loggin
并为存储用户日志创建 table 存储 url 与 timestamp 和 IP
对于那些仍然有问题的人,我根据@Adlan 提供的答案并根据他的答案的评论对答案进行了一些修改。由于您将在执行请求后记录活动,因此需要修改已接受的答案。以下是修改后的代码。
public function handle($request, Closure $next)
{
$response = $next($request);
if(auth()->user()) {
Activity::create([
'url' => request()->fullUrl(),
'ip_address' => request()->ip(),
'user_id' => auth()->id(),
]);
}
return $response;
}
首先,保存下一个请求的响应。然后检查用户身份验证,最后返回响应。
参考:https://laravel.com/docs/5.8/middleware
我想记录该用户访问过的所有 URL。但是没有 url 我想从我的代码中记录。这是我完成的代码,请给我一些建议。感谢和感激。
网络路由
Route::get('/{url}', 'LogController@myTestAddToLog')->where('url', '[\w\d\-]+(.*)');
日志控制器
public function myTestAddToLog()
{
\LogActivity::addToLog('My Testing Add To Log.');
}
App/Helpers LogActivity
public static function addToLog($subject)
{
$log = [];
$log['url'] = Request::fullUrl();
$log['ip'] = Request::ip();
$log['user_id'] = auth()->check() ? auth()->user()->id : 1;
LogActivityModel::create($log);
}
您需要创建一个中间件。
php artisan make:middleware AddToLog
然后,将您的代码放入中间件中。
<?php
namespace App\Http\Middleware;
use Closure;
use App\LogActivityModel;
class AddToLog
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
if(auth()->user()) {
LogActivityModel::create([
'url' => request()->fullUrl(),
'ip' => request()->ip(),
'user_id' => auth()->id(),
]);
}
return $response;
}
}
然后,在 app/Http/kernel.php
中,将您的中间件添加到 $middleware
。这将允许任何调用的 URL 触发此代码。
protected $middleware = [
...
\App\Http\Middleware\AddToLog::class,
];
请使用以下代码记录用户访问过的所有 url
Log::info(url()->full()); // For just loggin
并为存储用户日志创建 table 存储 url 与 timestamp 和 IP
对于那些仍然有问题的人,我根据@Adlan 提供的答案并根据他的答案的评论对答案进行了一些修改。由于您将在执行请求后记录活动,因此需要修改已接受的答案。以下是修改后的代码。
public function handle($request, Closure $next)
{
$response = $next($request);
if(auth()->user()) {
Activity::create([
'url' => request()->fullUrl(),
'ip_address' => request()->ip(),
'user_id' => auth()->id(),
]);
}
return $response;
}
首先,保存下一个请求的响应。然后检查用户身份验证,最后返回响应。
参考:https://laravel.com/docs/5.8/middleware