我正在为Joomla开发一个组件。它与流行的社交网站进行了集成。我通过给定的社交档案从数据库中检索用户信息。然后,我尝试使用以下代码让该用户登录:
$fbuser = $facebook->api(
'/me',
'GET',
array(
'access_token' => $_SESSION['active']['access_token']
)
);
// Get a database object
$db =& JFactory::getDBO();
$query = "SELECT * FROM #__users WHERE email = '".$fbuser['email']."';";
$db->setQuery($query);
$row = $db->loadRow();
if(isset($row))
{
$app = JFactory::getApplication();
$user =& JUser::getInstance($row[0]);
$credentials = array();
$credentials['username'] = $user->get('username');
$credentials['password'] = $user->get('password'); // When I change this to related users plain password then it works
$options = array();
$options['remember'] = true;
$options['silent'] = true;
$app->login($credentials, $options);
}
else
{
return 'There is no account associated with facebook';
}问题是数据库返回编码的密码,但这不起作用。当我将解码的密码提供给$credentials时,它起作用了。会有什么问题呢?
发布于 2012-01-20 11:11:37
一种选择是创建您自己的身份验证插件(非常简单的任务),它将使用只有您和站点知道的特定密码登录任何用户。
然后,您可以提供该密码和已知用户名。
为了安全起见,只允许该插件登录普通用户,而不是管理员。
发布于 2012-01-20 07:32:21
您需要对pwd (它在数据库中的存储方式)进行MD5散列。
试试这个:
$salt = '19IQYkelXrqVH1Eht6PFOIZRe5T1SQHs';
$pwd = md5_hex($pwd . $salt) .":$salt";
$query = "select name,username,email,password from jos_users where password = $pwd;";
...发布于 2016-09-04 13:38:48
// --- login mamanam.com
$app = JFactory::getApplication();
$credentials = array();
$credentials['username'] = $username;
$credentials['password'] = $password;
$app->login($credentials);登录函数Joomla!$app->login($credentials)的数组$credentials=array()中的必要参数
*对不起,我的英语不太好
https://stackoverflow.com/questions/8934717
复制相似问题