3

我使用并需要为 V10 更新的代码

    $this->feUser = EidUtility::initFeUser();

使用以下代码(随机)控制器时,上下文为我提供了正确的登录 feUser 对象。

    $context = GeneralUtility::makeInstance(Context::class);
    $user = $context->getAspect('frontend.user');
    DebuggerUtility::var_dump($user);

eID_include类中使用相同的代码时,没有给出 userObject

具体在下面的类

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['FileDumpEID.php']['checkFileAccess']['xxx'] = My\Class\Hooks\FileDumpHook:class

是否需要引导上下文?

4

2 回答 2

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')) {
于 2020-08-28T06:34:33.370 回答
1

由于 TYPO3\CMS\Frontend\Middleware\EidHandler 中间件在 TYPO3\CMS\Frontend\Middleware\FrontendUserAuthenticator 中间件之前按中间件顺序执行,我不认为这是可能的。

如果你需要前端处理的一部分,你可以添加一个自己的中间件,依赖于 TYPO3\CMS\Frontend\Middleware\FrontendUserAuthenticator,或者在打字稿中使用页面对象。

于 2020-05-06T14:53:02.713 回答