为什么登录FE用户按代码后无法访问页面?

时间:2017-02-26 14:33:25

标签: typo3 extbase typo3-7.6.x

我正在尝试使用以下代码通过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数组不为空。所以对我来说,用户似乎已登录。

但是,如果我试图呈现仅限于用户/组的页面内容,则结果为空。

如果我使用默认登录表单使用前端用户登录,则用户可以访问这些页面。

我做错了什么?

非常感谢

1 个答案:

答案 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;