1

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

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

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

4

1 回答 1

3

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

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

于 2013-08-02T18:37:53.780 回答