Php TYPO3 v10-在eID_include中使用上下文API获取feUser对象
我在V10中使用并需要更新的代码Php TYPO3 v10-在eID_include中使用上下文API获取feUser对象,php,typo3,typo3-9.x,typo3-10.x,Php,Typo3,Typo3 9.x,Typo3 10.x,我在V10中使用并需要更新的代码 $this->feUser = EidUtility::initFeUser(); 当使用以下代码(随机)控制器时,上下文为我提供了正确的登录feUser对象 $context = GeneralUtility::makeInstance(Context::class); $user = $context->getAspect('frontend.user'); DebuggerUtility::var_dump($
$this->feUser = EidUtility::initFeUser();
当使用以下代码(随机)控制器时,上下文为我提供了正确的登录feUser对象
$context = GeneralUtility::makeInstance(Context::class);
$user = $context->getAspect('frontend.user');
DebuggerUtility::var_dump($user);
在eID中使用相同的代码时,会给出include
类否用户对象
具体在下面的课堂上
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['FileDumpEID.php']['checkFileAccess']['xxx'] = My\Class\Hooks\FileDumpHook:class
是否需要引导上下文?因为TYPO3\CMS\Frontend\Middleware\EidHandler中间件是在TYPO3\CMS\Frontend\Middleware\FrontendUserAuthenticator中间件之前按中间件顺序执行的,我认为这是不可能的
如果您需要前端处理的一部分,您可以添加一个自己的中间件,使用TYPO3\CMS\frontend\middleware\FrontendUserAuthenticator,或者在typoscript中使用页面对象。我也有同样的问题。您可以更改中间件的顺序: 我在扩展名的“Configuration”目录中创建了一个新文件requestmiddleware.php:
<?php
return [
'frontend' => [
'typo3/cms-frontend/eid' => [
'disabled' => true
],
'typo3/cms-frontend/eid-new' => [
'target' => \TYPO3\CMS\Frontend\Middleware\EidHandler::class,
'after' => [
'typo3/cms-frontend/tsfe',
],
'before' => [
'typo3/cms-frontend/prepare-tsfe-rendering',
]
]
]
];
我现在也遇到了同样的挣扎。你找到解决办法了吗?如果我创建了一个中间件,它扩展了前端用户认证器中间件,并将该中间件放在eid中间件之前,我也必须创建上下文,如果我在文件转储挂钩中检查该上下文,似乎有些东西没有按预期工作,因为用户组丢失,并且isLoggedIn方法返回false。@我还没有找到一个有效的解决方案,此项的工作已暂停。如果你找到一个解决方案的例子,很高兴在下面发布。谢谢你的输入。由于建议我不要更改核心中间件堆栈,我添加了自己的中间件,它是EID中间件的副本。在下面的pull请求中,您可以找到两个示例。这是一个坏主意,因为您更改了内部标记的配置,请参阅。看看塞巴斯蒂安·菲舍尔的答案,这是正确的解决方案。
$context = GeneralUtility::makeInstance(Context::class);
if($context->getPropertyFromAspect('frontend.user', 'isLoggedIn')) {