Extbase:在域B中访问域A中的会话

时间:2012-11-04 13:37:05

标签: session cross-domain typo3 extbase

我目前正在Extbase 1.3 / Typo3 4.5中开发一个商店扩展,其中结帐流程将在与商店不同的域下处理(域A有商店和HTTP,域B有结帐和HTTPS)。在结账过程中,我需要访问域A的前端用户会话的内容(例如,用于检索位置)。我通过将控制器中的前端用户ID传递给结账

来尝试此操作
$this->uriBuilder->reset();
$this->uriBuilder->setArguments(array('fe_typo_user'=>$GLOBALS ['TSFE']->fe_user->id));
$url = $this->uriBuilder->uriFor('newCheckout');
$this->redirectToUri($url);

但这似乎对域B中用户的创建没有任何影响(域B中的用户ID与域A中的传入用户ID不同)。

有没有办法按用户会话ID设置当前前端用户?如果用户会话已在域A创建并且我想在域B重用此用户,这是否可能?

非常感谢

1 个答案:

答案 0 :(得分:1)

朋友们,这一天,什么是简单的答案。神奇的词是FE_SESSION_KEY。通过这种方式,您可以在多域typo3安装上维护会话:

$sessionId = $GLOBALS['TSFE']->fe_user->id;
$hash = md5($GLOBALS['TSFE']->fe_user->id.'/'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']);
$sessionKey = rawurlencode($sessionId.'-'.$hash);

$this->uriBuilder->reset();
$this->uriBuilder->setArguments(array('FE_SESSION_KEY'=>$sessionKey));
$url = $this->uriBuilder->uriFor('newCheckout');