Laravel调试器 - 在实现高速缓存时根据IP地址启用/禁用

问题描述 投票:7回答:2

我们需要根据IP地址启用/禁用Laravel调试栏。如果我们清除/禁用缓存,它会起作用。

但是在启用缓存时它不起作用。这是我的代码

//Enabling DEBUGBAR in Production Only for developers
if(in_array($request->ip(), [ip addresses])) {
    config(['app.debug' => true]);
}

.ENV

APP_DEBUG=false

我们正在使用配置和路由缓存。实现这一目标的最佳方法是什么?

Laravel版本 - 5.4

Debugbar版本 - 2.2

php laravel laravel-5 laravel-5.4
2个回答
7
投票

调试器具有在运行时启用/禁用它的功能:

\Debugbar::enable();
\Debugbar::disable();

如果要在生产中使用调试栏,请在配置中禁用,仅在需要时启用。

所以你可以这样做:

if(in_array($request->ip(), [ip addresses])) {
    \Debugbar::enable();
    // Forcing the cache to be cleared
    // Not recommended but if and only if required
    \Artisan::call('cache:clear');
}

请检查documentation以获得更多帮助。


1
投票

你正在使用Debugbar库,所以这个库将在你的路由或控制器加载之前加载,所以你最好在加载库之前引导你的东西。然后我们可以在AppServiceProvider类中引导我们的自定义配置。

服务提供商是所有Laravel应用程序引导的中心位置。

简单方法: 根据以下代码更改文件app\Providers\AppServiceProvider.php类。

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use Request;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        // You can also clear cache if needed Artisan::call('cache:clear');
        if(in_array(Request::ip(), ['127.0.0.1'])) {
            config(['app.debug' => true]);
        }
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.