2017-02-26 57 views
0

我試圖登錄的代碼FrontendUser在extbase擴展用下面的代碼:爲什麼頁面無法通過代碼登錄FE用戶?

$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->用戶和groupData數組不是空的。所以在我看來,用戶已登錄。

但是,如果我想渲染一些僅限於用戶/組的頁面內容,則結果爲空。

如果我使用默認登錄表單與前端用戶一起登錄,則用戶可以訪問這些頁面。

我做錯了什麼?

非常感謝

+1

不要像這樣做。這不是公共API。相反,請提供帶有參數'username = X','userident = P'和'status = login'的發佈請求,並讓API處理剩下的內容。 – pgampe

+0

好的,謝謝你的提示。你的意思是我可以使用類似GeneralUtility :: getUrl()的方式向自己發出請求併發送該數據以登錄? – HR123

回答

-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; 
相關問題