如何在登录Symfony 2之前和之后识别用户


How to recognize user before and after logging in Symfony 2?

我使用的是Symfony2.1,这是一种基于文档的非常简单的登录表单(http://symfony.com/doc/current/book/security.html#using-a-traditional-login-fm)和自定义身份验证成功处理程序。

匿名用户可以使用用户的会话ID执行一些存储在数据库中的操作。现在用户正在登录系统,我想使用用户的ID更新保存的操作,以便登录的用户可以继续工作。不幸的是,在成功处理程序中,我已经有了一个更新的会话ID,我不知道操作表中的哪些记录属于用户(因为它们存储在旧的会话ID中,我无法访问[或可以访问吗?])。

处理这种情况的最佳做法是什么。是否应该将操作保存在数据库中,并将令牌存储在cookie中而不是会话id中,或者是否存在内置机制,而我正在尝试重新发明轮子,或者可能我问错了问题,因此找不到答案。

在访问级别更改时生成新会话id的默认机制是最佳实践。您可以编写自己的身份验证,对新会话ID和旧会话ID执行某些操作。但除非您真的知道自己在做什么,否则最好不要使用安全和身份验证代码。

最好的方法是将令牌保存在数据库和cookie中,并用它跟踪用户。如果您不再需要,请不要忘记清理数据库中使用过的令牌和cookie。