You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 12 自定义注册后自动登录问题及解决方案

TYPO3 12 注册后自动登录失效及认证服务未触发问题

我开发了自定义TYPO3扩展用于用户注册,希望注册成功后自动登录用户,但之前的脚本在TYPO3 12环境下失效了:

$userToLogin = 42; // 注册后的用户ID

$feUser = $GLOBALS['TSFE']->fe_user;
unset($feUser->user);
$feUser->createUserSession($userToLogin);
$feUser->loginSessionStarted = TRUE;
$feUser->user = $feUser->fetchUserSession();
$GLOBALS['TSFE']->loginUser = 1;

我已经实现了认证服务,但注册后并未自动触发:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addService(
    'bo_xyz',
    'auth',
    \VENDOR\Extension\Service\MyAuthService::class,
    array(
        'title' => 'My Authentication',
        'description' => '',

        'subtype' => 'authUserFE',

        'available' => true,
        'priority' => 60,
        'quality' => 50,

        'os' => '',
        'exec' => '',

        'className' => \VENDOR\Extension\Service\MyAuthService::class
    )
);

MyAuthService类中的authUser()方法没有被调用,我已经通过POST传递了logintype=login参数。请问如何触发该服务?有没有基于用户UID实现自动登录的方案?


解决方案

经过测试研究,找到以下可行方案:

$feUser = $GLOBALS['TSFE']->fe_user;
unset($feUser->user);
$sessionResult = $feUser->createUserSession(['uid' => 42]);
$feUser->loginSessionStarted = TRUE;
$GLOBALS['TSFE']->loginUser = 1;
setcookie("fe_typo_user", $sessionResult->getJwt(), 0, '/');

内容的提问来源于stack exchange,提问作者lets-get-nerdy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 13:07:29