TYPO3 / Extbase - 切换到另一个 fe_user - 最后回到原始用户

TYPO3 / Extbase - Switch into another fe_user - and finally back to origin user

我需要一种从当前 fe_user 切换到另一个 fe_user 的方法(类似于后端 "simulate user" 所做的)- 并返回到原始用户。切换到另一个 fe_user 本身不是问题的一部分。问题是,原始用户(切换回哪个用户)的信息存放在哪里?工作流程如下所示:

  1. 如果 fe_user X (uid: 123) 被允许 "switch" (例如某个 fe_user 组的成员)
  2. 切换到用户 A
  3. 切换到用户 B
  4. ...等等...
  5. 现在切换回 "origin" 用户 X (uid: 123)

关于原始用户的信息不应该存储到 $GLOBALS['TSFE']->fe_user 或子数组中,我想。因为这将使用户 A 本身有可能切换回 X (uid: 123),尽管此用户以前从未 "was" 此用户。因此 "switch back" 信息必须存储在其他任何地方。但是在哪里呢?

您可以使用会话存储来获取保存的信息。您可以将主要 fe 用户的信息保存在用户会话密钥中,您可以将其用作信息,这是一个双会话。通过注销,您可以获得旧用户并重新登录。

我自己得到了答案。诀窍是将信息存储在 "ses" 类型的会话数据中(因为 "user" 在每个开关上都会被覆盖)。

if(!$frontendUserAuthentication->getKey('ses', 'tx_ext_originuser')) {
   $frontendUserAuthentication->setKey('ses', 'tx_ext_originuser', $frontendUserAuthentication->user['uid']);
   $frontendUserAuthentication->storeSessionData();  
}