TYPO3 10.4.36前端登录无法找到用户问题求助
TYPO3 10.4.36前端登录失效(pid签名验证问题)解决办法
问题根源
TYPO3 10.4.36版本对前端用户认证的pid参数新增了签名验证逻辑,如果你还是直接提交未签名的pid隐藏字段,系统会判定该参数无效,自动 fallback 到pid IN (0)查询,自然找不到指定存储文件夹里的前端用户,就会出现AuthenticationService: Login-attempt from username '*' not found!的日志。
解决步骤
1. 生成带签名的pid值
在渲染登录表单的PHP代码(比如控制器或模板的PHP部分)中,用TYPO3内置的HashService生成签名后的pid:
use TYPO3\CMS\Core\Security\HashService; use TYPO3\CMS\Core\Utility\GeneralUtility; // 替换成你的前端用户存储文件夹ID $storagePid = 123; // 获取HashService实例并生成签名 $hashService = GeneralUtility::makeInstance(HashService::class); $signedPid = $hashService->appendHmac((string)$storagePid);
2. 更新登录表单的隐藏字段
把原来的pid隐藏字段替换为带签名的checkPid_value字段:
<!-- 移除原来的未签名pid字段 --> <!-- <input type="hidden" name="pid" value="123"> --> <!-- 添加带签名的checkPid_value字段 --> <input type="hidden" name="checkPid_value" value="<?= htmlspecialchars($signedPid) ?>">
验证修复
提交登录请求后,查看TYPO3的认证日志,如果日志不再出现找不到用户的提示,同时调试SQL查询能看到使用了正确的存储文件夹pid,说明问题已经解决。
内容的提问来源于stack exchange,提问作者Falk Berger
相关产品推荐
相关产品推荐

