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

Session TYPO3/Extbase-切换到另一个fe_用户-最后返回到原始用户,session,typo3,frontend,extbase,Session,Typo3,Frontend,Extbase,我需要一种从当前fe_用户切换到另一个fe_用户(类似于后端“模拟用户”)并返回到原始用户的方法。切换到另一个fe_用户本身并不是问题的一部分。问题是,在哪里存储源用户(切换回哪个用户)信息?工作流程如下所示: 如果允许fe_用户X(uid:123)进行“切换”(例如,某个fe_用户组的成员) 切换到用户A 切换到用户B ……等等 现在切换回“原始”用户X(uid:123) 我想,关于源用户的信息不应该存储在$GLOBALS['TSFE']->fe_user或子数组中。因为这将使用户A本身能够切

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

  • 如果允许fe_用户X(uid:123)进行“切换”(例如,某个fe_用户组的成员)
  • 切换到用户A
  • 切换到用户B
  • ……等等
  • 现在切换回“原始”用户X(uid:123)

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

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

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


    为什么不在会话中保存UID呢?然后,如果按下开关按钮,您将获得需要切换到的uid并重新创建登录过程
    if(!$frontendUserAuthentication->getKey('ses', 'tx_ext_originuser')) {
       $frontendUserAuthentication->setKey('ses', 'tx_ext_originuser', $frontendUserAuthentication->user['uid']);
       $frontendUserAuthentication->storeSessionData();  
    }