我是 Symfony 和 PHP 的新手(以前使用 C++、Java),我找不到任何关于如何将用户登录和注销操作记录到数据库的解决方案。我想要这些具体信息:
- 采取行动的用户(通过 userId),
- 操作描述(登录或注销),
- 当前时间戳。
我正在寻找最简单的解决方案。我通过修改渲染用户登录表单的功能成功地记录了用户登录信息,但是在注销时我失败了。我知道这毕竟是一个糟糕的主意,但我想不出更好的主意。有什么建议么?提前致谢。
如果你看一下这里,它说你可以定义一个成功处理程序和一个失败处理程序,用于将内容记录到数据库中。您还可以找到参考文档中定义的处理程序参数。
登录
您将首先创建一个以 security.context 和 entityManager 作为参数的服务,并使用两者来确定哪个用户登录。然后将此服务添加到 success_handler 参数中,并在用户登录后调用。
登出
我猜这个更棘手,因为我假设 security.context 不再有关于用户的信息,你不能用它来确定哪个用户正在注销。您可能想查看handlers
参数实际上是什么。它可能是在处理注销时调用的处理程序,因此您可以使用它。当然,您可能会记录一些失败的注销,因为没有成功处理程序,您无法确定注销是否成功。另一方面,也许您可以从某个地方(同样,security.context 可能)获取会话 ID,然后将其记录下来。