Typo3 为什么页面不是';通过代码登录FE用户后是否无法访问?
我正在尝试使用以下代码通过extbase扩展中的代码登录FrontendUser:Typo3 为什么页面不是';通过代码登录FE用户后是否无法访问?,typo3,extbase,typo3-7.6.x,Typo3,Extbase,Typo3 7.6.x,我正在尝试使用以下代码通过extbase扩展中的代码登录FrontendUser: $loginData = array( 'username' => $user['username'], 'uname' => $user['username'], 'uident' => $user['password'], 'uident_text' => $user['password'],
$loginData = array(
'username' => $user['username'],
'uname' => $user['username'],
'uident' => $user['password'],
'uident_text' => $user['password'],
'status' => 'login'
);
$GLOBALS['TSFE']->fe_user->checkPid = FALSE;
$info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
$user = $GLOBALS['TSFE']->fe_user->fetchUserRecord($info['db_user'], $loginData['username']);
$login_success = $GLOBALS['TSFE']->fe_user->compareUident($user, $loginData);
if ( $login_success ) {
$GLOBALS['TSFE']->loginUser = TRUE;
$GLOBALS['TSFE']->fe_user->fetchGroupData();
$GLOBALS['TSFE']->fe_user->forceSetCookie = TRUE;
$GLOBALS['TSFE']->fe_user->start();
$GLOBALS['TSFE']->fe_user->createUserSession($user);
$GLOBALS["TSFE"]->fe_user->loginSessionStarted = TRUE;
$GLOBALS["TSFE"]->fe_user->user = $GLOBALS["TSFE"]->fe_user->fetchUserSession();
return true;
} else return false;
会话似乎存在,$GLOBALS['TSFE']->fe_user->user和groupData数组不是空的。因此,在我看来,用户已登录
但是,如果我试图呈现一些仅限于用户/组的页面内容,则结果为空
如果我使用默认登录表单与前端的用户一起登录,则用户可以访问这些页面
我做错了什么
非常感谢找到了解决方案。在 $GLOBALS['TSFE']->gr_列表 有一个CSV,其中包含当前用户可以访问的组的UID。登录后需要进行更新。也许不是一个完美的解决方案,但在我的情况下,它有帮助 这是完整的代码
$loginData = array(
'username' => $user['username'],
'uname' => $user['username'],
'uident' => $user['password'],
'uident_text' => $user['password'],
'status' => 'login'
);
$GLOBALS['TSFE']->fe_user->checkPid = FALSE;
$info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
$user = $GLOBALS['TSFE']->fe_user->fetchUserRecord($info['db_user'], $loginData['username']);
$login_success = $GLOBALS['TSFE']->fe_user->compareUident($user, $loginData);
if ( $login_success ) {
$GLOBALS['TSFE']->loginUser = TRUE;
$GLOBALS['TSFE']->fe_user->forceSetCookie = TRUE;
$GLOBALS['TSFE']->fe_user->start();
$GLOBALS['TSFE']->fe_user->createUserSession($user);
$GLOBALS["TSFE"]->fe_user->loginSessionStarted = FALSE;
$GLOBALS["TSFE"]->fe_user->user = $GLOBALS["TSFE"]->fe_user->fetchUserSession();
$GLOBALS['TSFE']->fe_user->fetchGroupData();
// Extend the group list (so the user can access restricted pages)
$GLOBALS['TSFE']->gr_list = implode(
',',
array_unique(
array_merge(
GeneralUtility::trimExplode(
',',
$GLOBALS['TSFE']->gr_list
),
$GLOBALS['TSFE']->fe_user->groupData['uid']
)
)
);
return true;
} else return false;
不要这样做。这不是公共API。相反,为a post请求提供参数
username=X
、userident=P
和status=login
,并让API处理其余部分。谢谢您的提示。你的意思是我可以使用像GeneralUtility::getUrl()这样的东西向自身发出请求并将数据发送到登录?