Symfony3 审计控制器

Symfony3 auditing controllers

我试图在 symfony3 的控制器中实施安全审计。与 https://github.com/simplethings/EntityAudit

中的 EntityAudit 类似的要求

案例说明:/{_locale}/introduction.{_format}页面有访问权限需要将以下信息记录到数据库table。 一种。使用的语言环境 b.要求的格式 C。是匿名请求或授权为 d.请求时间

同时,"counter"table递增控制器的请求"hit counter"。

什么是最佳实践,几行代码或参考文档就足够了。

我更愿意使用 EventListener 它会减少占用空间。

使用 EventListener 是以下情况的最佳实践。向审计、跟踪信息、日志记录、异常、API 订阅等发送电子邮件

因此您可以按如下方式向您的 services.yml 添加一个侦听器。

acme.demo.listener.your_listener:
    class: Acme\DemoBundle\EventListener\YourListener
    tags:
        - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

请查看更详细的信息。 http://symfony.com/doc/current/cookbook/event_dispatcher/event_listener.html

无论用户是匿名用户还是经过身份验证的用户,请使用以下内容:

Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;

Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;

您可以从事件请求中获取语言环境

Symfony\Component\HttpKernel\Event\GetResponseEvent;

对于格式,在 GetResponseEvent 的请求对象上有一个方法 getRequestFormat()。 RequestTime 只是 new \DateTime()

所以一切都会好起来的。