glaivepro / hidevara
Laravel 微包,当您的应用程序崩溃时,它会隐藏变量,以免在 Whoops 页面上被导出。
Requires
- laravel/framework: >=7.0
README
尽管 Laravel >=6.x 包含 Ignition,它不再导出您的变量,但它仍然需要 Whoops 本身。在某些情况下,您仍然可以访问带有变量导出的旧错误页面。
此包与 Laravel 8 一起工作得很好。我没有更新它,因为它仍然像以前一样正常工作。
Laravel 微包,当您的应用程序崩溃时,它会隐藏变量,以免在 Whoops 页面上被导出。
Hidevara
是日语中“隐藏这些该死的变量
”的意思。
使用方法
安装它
$ composer require glaivepro/hidevara
为了处理在加载提供者之前应用程序崩溃的情况,您应该打开您的 bootstrap/app.php
并扩展处理程序。找到以下行(或如果您更改了该名称空间,则类似的东西)
// This is already there $app->singleton( Illuminate\Contracts\Debug\ExceptionHandler::class, App\Exceptions\Handler::class );
立即在此之后插入以下行以扩展处理程序
// Enable only outside testing as this does not work well with phpunit... see below if ('testing' != env('APP_ENV')) // this will work even with config caching $app->extend( Illuminate\Contracts\Debug\ExceptionHandler::class, function($handler) { return new GlaivePro\Hidevara\HidingHandler($handler); });
默认情况下,此包将
- 保留您的 GET 和 FILE;
- 隐藏任何名称包含
password
的 POST 字段值; - 隐藏 SESSION 和 COOKIE 的值;
- 删除除 REDIRECT_STATUS、REQUEST_METHOD、QUERY_STRING、REQUEST_URI 之外的所有 SERVER 变量;
- 删除所有 ENV 变量。
“隐藏”意味着值将被替换为字符串。默认情况下,对于 null/emptystring 值是空字符串,对于其他所有内容是 [hidden]
。
自定义
发布配置
$ php artisan vendor:publish --provider="GlaivePro\Hidevara\Provider"
现在您有了自己的 config/hidevara.php
文件可以进行编辑。
您会看到与每个变量关联的规则集('action' => $test
)。测试可以是精确字段名的数组、字符串正则表达式或 true
以对任何内容执行此操作。
以下是一个示例
'_GET' => [ //this is the ruleset for fields in GET 'expose' => true, // show all fields ], '_ENV' => [ 'remove' => ['APP_KEY'], // remove key field entirely 'hide' => '/password/i', // hide anything that matches regex contains password 'trash' => '/PUSHER/' // anything that's not 'expose' or 'hide' will remove matched fields 'expose' => true, // expose all that remains ], '_SERVER' => [ 'expose' => ['REQUEST_METHOD'], // show the REQUEST_METHOD // everything that hasn't matched a rule will be removed ],
还有 replaceHiddenValueWith
和 replaceHiddenEmptyValueWith
,您可以为它们提供您喜欢的任何字符串(如 🍑)。
错误处理更改
要隐藏全局变量从 Whoops,它们在调用您的 Handler::render()
之前被劫持/破坏。如果您需要在该方法中访问原始的全局变量,您可以在 $GLOBALS['hidevara']
中获取它们。例如,$GLOBALS['hidevara']['_SERVER']
就是 $_SERVER
。
与 PHPUnit 一起工作
有时(据说是当抛出异常时)此包会导致 PHPUnit 崩溃。为了防止这种情况,我们不启用自定义处理,当环境是 testing
时。
如果您需要在运行 PHPUnit 时启用此功能,可以通过在您的 phpunit.xml
中的 <phpunit>
标签上设置 processIsolation="true"
来防止错误。
协作
请帮助!以下是一些开放问题和疑问
- 我们应该制作一个控制台命令来修复
app\bootstrap.php
。我们可以强制在需要时在提供者中调用它吗? - 默认配置应该是什么?
- 配置应该允许重复相同的规则吗?虽然可能,但这会使配置语法更复杂。
- 在 Laravel 中还有更好的方法来做这件事吗?
- 我们可以直接在 Whoopsies 的
PrettyPageHandler
中拦截并使其不特定于 Laravel 吗?
变更日志
有关最近更改的更多信息,请参阅 变更日志。
许可证
MIT许可(MIT)。更多信息请参阅许可文件。