1

通常のログイン拡張機能では処理できない方法でログイン データを検証する必要があるため、カスタム ログイン フォームを開発する必要があります。このログイン ボックスは、内線の一部です。extbase に書かれています。

しかし、基本的な質問に固執しました: extbase で fe_users セッションを処理するにはどうすればよいですか?

4

3 に答える 3

4

TYPO3 6.2では、提供された回答はどれもうまくいかないようでした。この修正は、Forge のバグレポート ( https://forge.typo3.org/issues/62194 ) で説明されています。基本的に、SessionCookie は自動的に配置されなくなりました。今すぐ自分でそれを行う必要があります。

        $reflection = new \ReflectionClass($GLOBALS['TSFE']->fe_user);
        $setSessionCookieMethod = $reflection->getMethod('setSessionCookie');
        $setSessionCookieMethod->setAccessible(TRUE);
        $setSessionCookieMethod->invoke($GLOBALS['TSFE']->fe_user);

createUserSession() を呼び出した後。

于 2015-03-27T08:18:02.957 に答える
4

私はこの関数を書きました、多分それは役に立ちます:

/** @var $fe_user tslib_feUserAuth */
$fe_user = $GLOBALS['TSFE']->fe_user;
$fe_user->createUserSession(array('uid' => $uid));
$fe_user->user = $fe_user->getRawUserByUid($uid);
$fe_user->fetchGroupData();
$GLOBALS['TSFE']->loginUser = 1;

Tx_Phpunit_Framework::loginFrontEndUser($userId)に触発されています:

// Instead of passing the actual user data to createUserSession, we
// pass an empty array to improve performance (e.g. no session record
// will be written to the database).
$GLOBALS['TSFE']->fe_user->createUserSession(array());
$GLOBALS['TSFE']->fe_user->user = $GLOBALS['TSFE']->fe_user->getRawUserByUid($userId);
$GLOBALS['TSFE']->fe_user->fetchGroupData();
$GLOBALS['TSFE']->loginUser = 1;
于 2012-05-11T13:38:02.300 に答える
2

たくさんのスニペットを組み合わせて、ようやく完成しました。それが私にとってうまくいった方法です:

$loginData = array(
  'uname' => $loginData['user'],
  'uident' => $loginData['passw'],
  'status' => 'login'
);

$GLOBALS['TSFE']->fe_user->checkPid = 0;
$info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
$user = $GLOBALS['TSFE']->fe_user->fetchUserRecord( $info['db_user'], $loginData['uname'] );
if ( $GLOBALS['TSFE']->fe_user->compareUident($user,$loginData) )
{
    $GLOBALS["TSFE"]->fe_user->user = $GLOBALS["TSFE"]->fe_user->fetchUserSession();
    $GLOBALS['TSFE']->loginUser = 1;
    $GLOBALS['TSFE']->fe_user->fetchGroupData(); 
    $GLOBALS['TSFE']->fe_user->start();
    $GLOBALS["TSFE"]->fe_user->createUserSession($user);
    $GLOBALS["TSFE"]->fe_user->loginSessionStarted = TRUE;
}
于 2011-10-12T10:06:33.897 に答える