我试图在symfony3的控制器中实现安全审计。要求类似于 https://github.com/simplethings/EntityAudit 中的实体审计
案例说明:/{_locale}/简介。{_format} 页具有访问权限需要将以下信息记录到数据库表中。A. 使用的区域设置B. 请求的格式c. 是匿名请求或授权为D. 请求时间
同时,"计数器"表递增控制器的请求"命中计数器"。
最佳实践是什么,只需几行代码或参考文档就足够了。
我更喜欢使用EventListener
因为它的足迹会更少。
使用EventListener
是最佳做法,例如以下情况。发送电子邮件到审计,跟踪信息,日志记录,异常,API订阅等。
因此,您可以按如下方式将侦听器添加到services.yml
。
acme.demo.listener.your_listener:
class: AcmeDemoBundleEventListenerYourListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
请参阅更多详细信息。 http://symfony.com/doc/current/cookbook/event_dispatcher/event_listener.html
无论用户匿名还是经过身份验证的用户,请使用以下内容:
SymfonyComponentSecurityCoreAuthenticationTokenAnonymousToken;
和
SymfonyComponentSecurityCoreAuthenticationTokenStorageTokenStorageInterface;
您可以从事件请求中获取区域设置
SymfonyComponentHttpKernelEventGetResponseEvent;
对于格式,在 GetResponseEvent 的请求对象上有一个方法getRequestFormat()
。请求时间只是new DateTime()
所以一切都会好起来的。