TYPO3 v11 - 如何访问会话 ID?

问题描述 投票:0回答:2

我正在将自定义 TYPO3 插件从 TYPO3 v10 更新到 v11。

当新用户到达时,fe_sessions 表中会设置一条记录,因此显然正在创建一个新会话。在 TYPO3 v10 中,即使用户没有登录,我也可以通过以下方式访问该会话 ID:

$sessionId = $GLOBALS['TSFE']->fe_user->user['ses_id'];
    

有人对如何在 v11 中执行此操作有任何建议吗?我在文档或网络搜索中没有找到任何符合要求的内容。 TYPO3\CMS\Core\Session\UserSessionManager 看起来很有前途,但是您需要使用 userSessionManager 创建一个新的 userSession 对象才能访问 sessionId。然而,除了创建 UserSession 对象之外的所有 userSessionManager 方法都需要会话 id 作为参数(循环陷阱)。唯一不要求 sessionId 的方法是创建一个新的匿名会话,该会话与 fe_sessions 表中的 id 不匹配。

由于我想访问一个页面上的 sessionId 并在另一个页面上重新访问它作为安全检查的一部分,因此任何创建新 sessionId 以查看它的方法都不起作用。

我错过了什么?非常感谢。

session typo3 typo3-11.x
2个回答
0
投票

用户信息已在 TYPO3 v11 中移动到上下文中,可以使用

$context->getPropertyFromAspect('frontend.user', '...');

进行访问

参见手册

Session 有自己的 UserSessionMangagerAPI


0
投票

我还没有在 v11 中测试过这一点,但在 v12 中你可以这样做:

$sessionId = $GLOBALS['TSFE']->fe_user->getSession()->getIdentifier();

使用

getSession()
,您将收到
TYPO3\CMS\Core\Session\UserSession
的实例,它具有用于检索会话 id 的方法
getIdentifier()

© www.soinside.com 2019 - 2024. All rights reserved.