将日志添加到用户登录/注销Symfony2

时间:2013-08-08 20:05:20

标签: php security symfony

我在我创建的symfony.com文档后面有一个简单的SecurityBundle:

  • 实现UserProviderInterface
  • 的UserRepository
  • 实施UserInterfaceEquatableInterface
  • 的UserEntity
  • 具有loginAction
  • 的SecurityController
  • 使用login,login_check,logout routes设置路由
  • 设置我的防火墙设置

public function loginAction()
{
    $request = $this->getRequest();
    $session = $request->getSession();

    if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
        $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
    } else {
        $error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
        $session->remove(SecurityContext::AUTHENTICATION_ERROR);
    }

    return $this->render('MySecurityBundle:Security:login.html.twig', array(
        'last_username' => $session->get(SecurityContext::LAST_USERNAME),
        'error' => $error,
    ));
}

一切都还可以,但是我需要为用户的每个动作添加一个记录器,例如:USER:username, DO:erase file XXXXX, AT:2013-08-08.15-03-43问题是我在登出时无法控制,登录操作因为防火墙捕获这些并且我不知道如何修改

1 个答案:

答案 0 :(得分:2)

security.interactive_login事件可以捕获登录事件。 Read here

要注销,需要在注销防火墙中指定自己的success_handlerRead here。登录也可以这样做。

firewalls:
    main:
        form_login:
            failure_handler: mybundle.security.handler.failure
            success_handler:mybundle.security.handler.success
        logout:
            success_handler: mybundle.security.handler.logout
相关问题