我试图在ajaxAction
中手动登录前端用户(并执行其他一些基本操作),但它似乎不起作用,因为我打算。我做什么,当登录表单提交:试图返回之前打印出来$GLOBALS['TSFE']->fe_user
时typo3 7 + extbase:手动登录前端用户
$loginData = array(
'username' => $username,
'uident_text' => $password,
'status' => 'login',
);
$GLOBALS['TSFE']->fe_user->checkPid = 0;
$info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
$user = $GLOBALS['TSFE']->fe_user->fetchUserRecord($info['db_user'], $loginData['username']);
$GLOBALS['TSFE']->loginUser = 1;
$GLOBALS['TSFE']->fe_user->createUserSession($user);
$GLOBALS['TSFE']->fe_user->setAndSaveSessionData('user', TRUE);
return json_encode(['login' => 'true']);
,数据集和$GLOBALS['TSFE']->loginUser = 1
,所以一切看起来文件。然而,当我重新加载登录表单时,fe_user数据仍然存在,但流体security.ifAuthenticated
不起作用。
表单视图看起来是这样的:
<f:security.ifAuthenticated>
<f:then>
user is authenticated!
</f:then>
<f:else>
<f:render partial="LoginForm.html"/>
</f:else>
</f:security.ifAuthenticated>
Username: {user.firstName}
它corretly输出登录用户的名字,但也仍显示登录表单。 security.ifAuthenticated
总是进入ELSE。当我看着视图帮助器时,这是因为没有设置$GLOBALS['TSFE']->loginUser
。
任何提示/想法为什么发生这种情况?