TYPO3 fe_user 如何通过php代码登录用户? [英] TYPO3 fe_user how login user via php code?
本文介绍了TYPO3 fe_user 如何通过php代码登录用户?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有 TYPO3 7.6.18 和扩展女性管理员.
I have TYPO3 7.6.18 and extension femanager.
$GLOBALS['TSFE']->fe_user->checkPid = '';
$info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
$user = $GLOBALS['TSFE']->fe_user->fetchUserRecord($info['db_user'], $username);
$loginData = array('uname' => $username, 'uident' => $password, 'status' => 'login');
$GLOBALS['TSFE']->fe_user->forceSetCookie = TRUE;
$GLOBALS['TSFE']->fe_user->createUserSession($user);
$GLOBALS['TSFE']->fe_user->user = $GLOBALS['TSFE']->fe_user->fetchUserSession();
$loginSuccess = $GLOBALS['TSFE']->fe_user->compareUident($user, $loginData);
此代码不起作用.错误:
this code does't work. error:
PHP Catchable Fatal Error: Argument 2 passed to In2code\Femanager\Utility\LogUtility::log() must be an instance of In2code\Femanager\Domain\Model\User, boolean given, called in /home/abenteuer/public_html/typo3conf/ext/feusersplus/Classes/Controller/NewController.php on line 91 and defined in /home/abenteuer/public_html/typo3conf/ext/femanager/Classes/Utility/LogUtility.php line 48
是硬编码吗?可能存在更好的方法吗?
Is it hard code? May be exists better way ?
你知道如何通过php代码登录用户吗?
Do you know how login user via php code ?
推荐答案
对于 $loginData['uname']
我使用电子邮件作为用户名,您可以简单地使用用户名自行更改($user->getUsername()
);
For the $loginData['uname']
i use the email as username, you can simply change it with the username it self ($user->getUsername()
);
Class StandardLogin:
<?php
namespace Ads\Adsmanager\Authentication\Login;
/**
* Standard Login of users
*
* @author Andrei Todorut <todorutac@gmail.com>
*/
class StandardLogin extends \TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication implements LoginInterface
{
/**
*
* @param \Ads\Adsmanager\Domain\Model\User $user
* @return boolean
*/
public function login(\Ads\Adsmanager\Domain\Model\User $user)
{
$passwordProcessor = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Saltedpasswords\\Salt\\PhpassSalt');
$loginData = array(
'uname' => $user->getEmail(), //usernmae
'uident' => $user->getPassword(), //password
'status' => 'login'
);
$this->checkPid = false;
$info = $this->getAuthInfoArray();
$info['db_user']['username_column'] = 'email';
$user_db = $this->fetchUserRecord($info['db_user'], $loginData['uname']);
if ($user_db && $passwordProcessor->checkPassword($user->getPassword(), $user_db['password'])) {
$this->setSession($user_db);
return true;
}
return false;
}
private function setSession($user_db)
{
$GLOBALS['TSFE']->fe_user->createUserSession($user_db);
$GLOBALS['TSFE']->fe_user->user = $user_db;
$GLOBALS['TSFE']->fe_user->setKey('ses', 'fe_typo_user', $user_db);
}
}
你的动作控制器:
<?php
//...
//stuff
public function loginAction(\TYPO3\CMS\Extbase\Domain\Model\User $user)
{
$login = new StandardLogin();
$login->login($user);
}
//...
这篇关于TYPO3 fe_user 如何通过php代码登录用户?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文