Symfony2:记录用户活动

时间:2012-08-06 22:35:16

标签: login symfony logout

我是Symfony和PHP的新手(以前使用的是C ++,Java),我找不到任何有关如何将用户登录和注销操作记录到数据库的解决方案。我想要那些具体的信息:

  • 采取行动的用户(通过userId),
  • 操作说明(登录或注销),
  • 当前时间戳。

我正在寻找最简单的解决方案。我通过修改函数呈现用户登录表单成功地记录了用户登录信息,但是当我注销时我失败了。毕竟我知道这是一个糟糕的主意,但我无法想出更好的主意。有什么建议?提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果你看一下here,它说你可以定义一个成功处理程序和一个故障处理程序,用于将东西记录到数据库中。您还可以找到reference documentation中定义的处理程序参数。

<强>登录

您首先要创建一个服务,它将security.context和entityManager作为参数,并使用它们来确定登录的用户。然后将此服务添加到success_handler参数中,并在用户登录后调用该服务。

<强>注销

我想这个更棘手,因为我认为security.context不再有关于用户的信息,你不能用它来确定哪个用户正在注销。您可能想要查看handlers参数实际上是什么。它可能是处理注销时调用的处理程序,因此您可以使用它。当然,您可能会记录一些失败的注销,因为如果没有成功处理程序,您无法确定注销是否成功。另一方面,也许你可以从某个地方获取会话ID(同样,也许是security.context),然后记录下来。