Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在登录Symfony 2前后识别用户?_Php_Session_Authentication_Symfony - Fatal编程技术网

Php 如何在登录Symfony 2前后识别用户?

Php 如何在登录Symfony 2前后识别用户?,php,session,authentication,symfony,Php,Session,Authentication,Symfony,我使用的是Symfony2.1,一个基于文档()的非常简单的登录表单和一个自定义的身份验证成功处理程序 匿名用户可以使用用户的会话ID执行一些存储在数据库中的操作。现在用户正在登录系统,我想使用用户ID更新保存的操作,以便登录的用户可以继续其工作。不幸的是,在success handler中,我已经有了一个更新的会话ID,我不知道action表中的哪些记录属于用户(因为它们存储在旧会话ID中,我无法访问[或者我可以吗?]) 处理这种情况的最佳做法是什么。是否应该使用存储在cookie中的令牌而不

我使用的是Symfony2.1,一个基于文档()的非常简单的登录表单和一个自定义的身份验证成功处理程序

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


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

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


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

乔纳森·韦格最近在他的blug上写了一个非常类似的用例: