Laravel,不要使用`antonioribeiro / tracker`跟踪路线

时间:2016-04-18 08:43:39

标签: php laravel laravel-5 routes

我目前在我的Laravel上使用antonioribeiro/tracker来获取某些统计信息。

我正在努力使用配置中的do_not_track_routes数组。

我只是尝试禁用跟踪器来跟踪管理员路线,但它不起作用。

    'do_not_track_routes' =>
    [
    'admin.*',
    ]

    /* Admin routes */
    Route::group(['namespace' => 'Admin', 'as'=>'admin', 'prefix' => 'admin1452872135', 'middleware' => ['auth', 'admin', 'language']], function () {
        //some route
    });

即使这样,跟踪器也会插入新会话......

    'do_not_track_routes' =>
    [
    '*',
    ]

我真的尝试了我想到的一切,我会感谢你的帮助...

2 个答案:

答案 0 :(得分:1)

在包内调试后得到我自己的答案... 事实上,do_not_track_routesTracker.php

中从不使用vendor\pragmarx\tracker\src\Tracker.php

所以我更新了isTrackable方法:

protected function isTrackable() {
    return $this->config->get('enabled') &&
    $this->logIsEnabled() &&
    $this->parserIsAvailable() &&
    $this->isTrackableIp() &&
    $this->isTrackableEnvironment() &&
    $this->notRobot() &&
    $this->isTrackableRoute();
}

并添加此新方法,以检查当前网址是否在do_not_track_route数组中:

protected function isTrackableRoute() {
    if (is_null(\Request::path())) {
            return true;
    }
    $routes = $this->config->get('do_not_track_routes');
    foreach ($routes as $route) {
            $match = preg_grep ('/'. $route .'/i', [\Request::path()]);
            if(!empty($match)){
                return false;
            }
    }
    return true;
}

适合我,如果你找到更好的答案,我就在! :)

答案 1 :(得分:0)

您必须在do_not_track_routes下指明路线的名称(而不是URI)。

因此,如果您的路线定义为'as'=>'admin',则您的智能设备配置必须

'do_not_track_routes' =>
[
    'admin',
]

在回复@Jiedara时,do_not_track_routes使用了PragmaRX\Tracker\Data\Repositories\Route来检查它是否包含$route->currentRouteName()$routeIlluminate\Routing\Router的一个实例,currentRouteName()方法确实提供了路由的名称。