2017-02-26 6 views
0

私は次のコードでextbase拡張のコードでFrontendUserにログインしようとしている:ログイン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'というパラメータをpostリクエストして、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; 
関連する問題