TYPO3 v10 - 在 eID_include 中使用上下文 API 获取 feUser 对象
Posted
技术标签:
【中文标题】TYPO3 v10 - 在 eID_include 中使用上下文 API 获取 feUser 对象【英文标题】:TYPO3 v10 - Getting feUser Object using context API in eID_include 【发布时间】:2020-08-21 12:40:43 【问题描述】:我使用的代码需要为 V10 更新
$this->feUser = EidUtility::initFeUser();
当使用以下代码(随机)控制器时,上下文为我提供了正确的登录 feUser 对象。
$context = GeneralUtility::makeInstance(Context::class);
$user = $context->getAspect('frontend.user');
DebuggerUtility::var_dump($user);
当在 eID_include
类中使用相同的代码时 No 给出 userObject。
具体在下面的类中
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['FileDumpEID.php']['checkFileAccess']['xxx'] = My\Class\Hooks\FileDumpHook:class
是否需要引导上下文?
【问题讨论】:
我现在也遇到了同样的问题。你找到解决办法了吗?如果我创建一个扩展前端用户身份验证器中间件的中间件,并将这个中间件放在 eid 中间件之前,我也必须创建上下文,如果我在文件转储挂钩中检查这个上下文,似乎有些事情没有按预期工作,因为缺少用户组,isLoggedIn 方法返回 false。 @Fox 我还没有找到可行的解决方案,为此工作暂停。如果您找到解决方案示例,请在下方发布。 【参考方案1】:我遇到了同样的问题。您可以更改中间件的顺序:https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/RequestHandling/Index.html
我在我的扩展的“配置”目录中创建了一个新文件 RequestMiddlewares.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',
]
]
]
];
您必须刷新 TYPO3 和 PHP 缓存并检查“配置”后端模块中的顺序(选择“HTTP 中间件 (PSR-15)”)。
通过此设置,可以获得上下文属性“frontent.user”
$context = GeneralUtility::makeInstance(Context::class);
if($context->getPropertyFromAspect('frontend.user', 'isLoggedIn'))
【讨论】:
感谢您的意见。由于建议我不要更改核心中间件堆栈,因此我添加了自己的中间件,它是 EidMiddleWare 的副本。在以下拉取请求中,您可以找到两个示例。 Pull request 这是个坏主意,因为您更改了内部标记的配置,请参阅github.com/TYPO3/TYPO3.CMS/blob/10.4/typo3/sysext/frontend/…。看看 Sebastian Fischer 的答案,这是正确的解决方案。【参考方案2】:由于 TYPO3\CMS\Frontend\Middleware\EidHandler 中间件在 TYPO3\CMS\Frontend\Middleware\FrontendUserAuthenticator 中间件之前按中间件顺序执行,我不认为这是可能的。
如果您需要前端处理的一部分,您可以添加自己的中间件,依赖于 TYPO3\CMS\Frontend\Middleware\FrontendUserAuthenticator,或者在打字稿中使用页面对象。
【讨论】:
以上是关于TYPO3 v10 - 在 eID_include 中使用上下文 API 获取 feUser 对象的主要内容,如果未能解决你的问题,请参考以下文章
如何在typo3 V10的extbase控制器中重定向到404页面
TYPO3 v10 routeEnhancer 生成 slug 但无法解决