laravel - 如何动态启用 Laravel Debugbar?
问题描述
如何在运行时启用 Laravel 调试栏?我想基于会话变量启用它。在我的AppServiceProvider
我添加:
\Debugbar::enable()
但它不起作用。如果我将其设置env
APP_DEBUG
为true
它可以工作,那么调试栏一切正常(我已经成功使用了一段时间),但似乎无法在运行时打开/关闭它?我在 Laravel 5.4 上。我希望在我的生产环境中默认关闭它,但可以选择以管理员/开发者身份打开它。
我确实看到了这个答案: 动态隐藏 Laravel barryvdh 调试栏
但是,我希望它默认禁用并在需要时启用它,而不是相反。这是因为性能,根据调试栏的文档:
注意。一旦启用,就会添加收集器(并且可能会产生额外的开销),因此如果您想在生产中使用调试栏,请在配置中禁用并仅在需要时启用。
谢谢!
解决方案
调试栏需要捕获应用程序中发生的所有事情,为了实现这一点,它必须在应用程序中几乎所有其他事情发生之前运行。
例如,如果您能够为管理员打开它,则应用程序需要完全启动,获取您的身份验证断言,检查数据库,然后查看您是管理员,然后才知道您希望调试器正在运行。
您可以做的最好的事情是启动第二个具有不同 ENV 变量的环境。如果你愿意,你甚至可以让它访问同一个生产数据库,但它需要是一个单独的 App 实例。一般来说,无论如何,这是一个更好的工作流程,有一个与生产相同的暂存环境。这里的一个小的安全考虑是,任何在您的生产实例中拥有帐户的用户,如果它在公共网络上,也可以登录。因此,您需要通过 .htaccess 使用密码来保护它,或者可能只为访问服务器设置一个 IP 白名单,这样它就不仅仅是坐在那里了。调试为怀有恶意的人提供了大量有用的信息。
推荐阅读
- nlp - Dialogflow:代理名称(项目 ID)- 允许使用哪些字符?
- javascript - 使用Highcharts在折线图中的2点之间画一条线?
- google-code-prettify - 如何使用谷歌代码美化来显示差异
- c# - 将双精度舍入到 4 位精度具有意外行为
- express - 在 Mongoose 中反向运行 forEach 循环
- c# - LINQ - 基于子元素值的简单选择
- java - SpringBoot入门:启动失败
- parallel-processing - 将许多文件传输到 Gnu Parallel 的最佳方式
- python - RegEX:如何在字符串之间排除并匹配重命名字符串
- powershell - Visual Studio Code 中的 Powershell 和 2 因素身份验证