c975l/exceptionchecker-bundle

用于处理Symfony异常的监听器,以便重定向到另一个URL或抛出包含URL列表的GoneException


README

想象一下... 在您的Symfony网站上有一个错误的请求,导致Monolog发送给您一封电子邮件(操作级别设置为错误)。然后,您只需删除该电子邮件或将操作级别设置为关键(然后丢失所有关于应解决的问题的真实链接问题的警告!

使用 ExceptionCheckerBundle,排除并重定向到您的首页或您想去的任何地方,一个错误的URL调用就像点击链接一样简单!

电子邮件发送的日志文件中提供了一个链接,该链接将引导您到一个表单,您需要输入您定义的秘密代码(如果您已登录,则不需要秘密代码),然后就可以了!URL被排除并重定向了!您可以使用该表单在提交之前更改类型和数据。

ExceptionCheckerBundle执行以下操作

  • 捕获Symfony的异常并检查被调用的URL是否已被删除或重定向,或者是否是排除或忽略的
  • 允许使用 通配符 匹配URL
  • 搜索和重定向时,对任何类型的字符大小写进行搜索(例如,https://example.com/YourFILe.html 应该是 https://example.com/YourFile.html
  • 提供表单以创建、修改、复制、删除ExceptionCheckers
  • 将减少错误触发,因为如果URL已注册,它们将不再是异常(除非是已删除的URL,将抛出GoneHttpException)
  • 与您的网页设计集成
  • 使用电子邮件发送的日志文件中提供的简单URL调用(+秘密代码或已登录)创建新的ExceptionChecker

此Bundle依赖于使用 jQueryBootstrap

ExceptionCheckerBundle专用网页.

ExceptionCheckerBundle API文档.

Bundle安装

步骤 1:下载Bundle

使用 Composer 安装库

    composer require c975l/exceptionchecker-bundle

步骤 2:配置Bundle

检查依赖项的配置

版本2.0+的c975LExceptionCheckerBundle使用 c975L/ConfigBundle 来管理配置参数。使用路由 "/exception-checker/config" 和适当的用户角色来修改它们。

从v1.x升级?请查看 UPGRADE.md

步骤 3:启用路由

然后,通过将它们添加到项目中的 /config/routes.yaml 文件中启用路由

c975_l_exception_checker:
    resource: "@c975LExceptionCheckerBundle/Controller/"
    type:     annotation
    prefix: /
    #Multilingual website use the following
    #prefix: /{_locale}
    #defaults:   { _locale: '%locale%' }
    #requirements:
    #    _locale: en|fr|es

步骤 4:创建MySql表

您可以使用 php bin/console make:migration 创建迁移文件,如 Symfony的Doctrine文档 所述,或者使用 /Resources/sql/exception_checker.sql 创建 exception_checker 表。DROP TABLE 被注释以避免意外删除。

作为奖励,sql文件中提供了一些要排除的知名测试链接,在运行sql文件之前,只需取消此部分的注释即可。

步骤 5:与您的网站集成

强烈建议使用 从第三方Bundle覆盖模板的功能,以完全与您的网站集成。

为了实现这个功能,简单地创建以下结构 /templates/bundles/c975LExceptionCheckerBundle/ 在您的应用中,然后复制文件 layout.html.twig 到其中,以覆盖现有的Bundle文件,然后应用您需要的更改,例如语言等。

layout.html.twig 中,它主要将扩展您的布局并定义特定的变量,即

{% extends 'layout.html.twig' %}

{# Defines specific variables #}
{% set title = 'ExceptionChecker (' ~ title ~ ')' %}

{% block content %}
    {% block exceptionchecker_content %}
    {% endblock %}
{% endblock %}

如何使用

ExceptionCheckerBundle可以轻松地替换Monolog中放置的excluded_404s,以避免过多的404错误而变得洪水般,因此您可以从您的config_prod.yml中删除此选项。

使用路由 exceptionchecker_dashboard(URL:"/exception-checker/dashboard")来访问仪表板。然后您可以添加URL。

URL的匹配使用LIKE url%进行,这意味着如果搜索的URL是检查的URL的开始,则会匹配,例如 /wp-login.php 将与 /wp-login 匹配。

您可以使用通配符来匹配一组URL,通过在URL末尾添加*,例如URL /wp* 将与 /wp-login/wp-admin/wp-login.php 等匹配。

通过URL调用添加已删除或排除的内容

此Bundle提供了一种易于快速添加已删除|排除的URL的出色功能!

想象一下,您收到一封新邮件(例如来自Monolog),表示“未找到路由...”。要将此URL添加到ExceptionCheckerBundle,只需指示{kind}(已删除或排除)并将请求的{url}复制/粘贴到 http://example.com/ec-add/{kind}?u={url}(这将使用路由 exceptionchecker_add)。输入您的密钥(如果您未登录)并添加URL!

例如,http://example.com/ec-add/excluded?u=/js/mage/cookies.js

您需要在 /config/config_bundles.yaml 中设置 exceptionCheckerSecret 或使用c975L/ConfigBundle,通过使用路由"/exception-checker/config",以便能够添加URL而无需登录。

已删除的URL

如果找到URL,ExceptionCheckerBundle将抛出GoneHttpException

重定向URL

重定向URL可以重定向到AssetRouteUrl。您需要输入以下类型的数据

  • Asset:到您的资源的路径,例如/path_to_asset
  • URL:相对或绝对URL,例如http://example.com
  • 无参数的路由:route_name
  • 一个参数的路由:route_name['param_key' => 'param_value']
  • 多个参数的路由:route_name['param_key' => 'param_value', 'another_param_key' => 'another_param_value']

如果找到URL,ExceptionCheckerBundle将更新事件响应以重定向到定义的URL。

忽略的URL

如果找到URL,ExceptionCheckerBundle将抛出BadRequestHttpException

排除的URL

排除的URL是不希望的404 HTTP错误,例如当攻击者扫描您的应用程序的一些知名应用程序路径时(例如 /phpmyadmin)。

如果找到URL,ExceptionCheckerBundle将重定向到配置值 redirectExcluded 中定义的路由。我们建议您重定向到您的主页。

如果这个项目 帮助您减少开发时间,您可以通过顶部的“赞助”按钮来赞助我:)