我正在尝试使用以下代码通过extbase扩展中的代码登录FrontendUser:
$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数组不为空。所以对我来说,用户似乎已登录。
但是,如果我试图呈现仅限于用户/组的页面内容,则结果为空。
如果我使用默认登录表单使用前端用户登录,则用户可以访问这些页面。
我做错了什么?
非常感谢
答案 0 :(得分:-1)
找到解决方案。在
$ GLOBALS [ 'TSFE'] - > gr_list
有一个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;