【问题标题】:TYPO3 / Extbase - Switch into another fe_user - and finally back to origin userTYPO3 / Extbase - 切换到另一个 fe_user - 最后回到原始用户
【发布时间】:2020-01-29 23:55:28
【问题描述】:

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

  1. 如果 fe_user X (uid: 123) 被允许“切换”(例如某个 fe_usergroup 的成员)
  2. 切换到用户 A
  3. 切换到用户 B
  4. ...等等...
  5. 现在切换回“原始”用户 X (uid: 123)

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

【问题讨论】:

  • 为什么不直接保存会话中的 uid?然后如果你按下切换按钮,你会得到你需要切换到的uid并重新创建登录过程

标签: session typo3 frontend extbase


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 2017-03-25
      相关资源
      最近更新 更多