我想实现针对我的应用程序的尝试的数据日志。其中之一就是没有安全权的人想要去某个页面。例如,普通用户尝试访问仅适用于管理员的URL。
Symfony提供此安全注释:
/**
* @Security("has_role('ROLE_ADMIN')")
*/
现在我用它来显示错误页面。但我想做的是将数据发送到数据库,以防有人试图经常进入管理员网站(不到一分钟内三次或更多次)。我将存储的数据类型是用户,以防有人登录,IP,时间戳等。我已经有了一个存储服务,我只是想知道是否有人知道有人试图在没有授权的情况下反复访问该页面,以及如何在这种情况下调用我的服务。
我一直在查看symfony文档,但无法找到与我的问题相关的任何信息。我很感激你的帮助!
提前致谢。
解决
为了能够使用我的其他服务,我在服务声明中做了@ShiraNai7告诉我的内容加上这个。感谢。
app.exception_listener:
class: InnoGames\Bundle\OfficeITBundle\EventListener\ExceptionListener
arguments: [@service_container]
tags:
- { name: kernel.event_listener, event: kernel.exception }
答案 0 :(得分:1)
您可以为kernel.exception事件创建一个列表器,并在那里进行日志记录。
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
use Symfony\Component\HttpFoundation\Response;
public function onKernelException(GetResponseForExceptionEvent $event)
{
$exception = $event->getException();
$request = $event->getRequest();
// do your logging here
}
另见Symfony docs - How to Create Event Listeners and Subscribers