gpt4 book ai didi

来自外部应用程序的 Joomla 登录身份验证

转载 作者:行者123 更新时间:2023-12-04 22:17:06 26 4
gpt4 key购买 nike

我需要从我的外部应用程序中检查 Joomla 用户名 密码 是否有效。用户不必在其帐户存在时登录系统。我该怎么做呢?

最佳答案

我假设您的外部应用程序可以访问 Joomla 的数据库并且也是用 php 编写的。

我已经回答了一个关于 creating a user outside joomla 的类似问题,您可以使用相同的方法,但您可以使用 save 来检查密码是否正确,而不是从 JUser 调用 bind 方法。

或者 更好的东西 :在创建 "environment" outside Joomla 后简单地复制和粘贴 Joomla 自己的身份验证机制!检查 JOOMLA_PATH/plugins/authentication/joomla.php :

 function onAuthenticate( $credentials, $options, &$response ){
jimport('joomla.user.helper');
// Joomla does not like blank passwords
if (empty($credentials['password'])){
$response->status = JAUTHENTICATE_STATUS_FAILURE;
$response->error_message = 'Empty password not allowed';
return false;
}

// Initialize variables
$conditions = '';

// Get a database object
$db =& JFactory::getDBO();

$query = 'SELECT `id`, `password`, `gid`'
. ' FROM `#__users`'
. ' WHERE username=' . $db->Quote( $credentials['username'] )
;
$db->setQuery( $query );
$result = $db->loadObject();

if($result){
$parts = explode( ':', $result->password );
$crypt = $parts[0];
$salt = @$parts[1];
$testcrypt = JUserHelper::getCryptedPassword($credentials['password'], $salt);

if ($crypt == $testcrypt) {
$user = JUser::getInstance($result->id); // Bring this in line with the rest of the system
$response->email = $user->email;
$response->fullname = $user->name;
$response->status = JAUTHENTICATE_STATUS_SUCCESS;
$response->error_message = '';
} else {
$response->status = JAUTHENTICATE_STATUS_FAILURE;
$response->error_message = 'Invalid password';
}
}
else{
$response->status = JAUTHENTICATE_STATUS_FAILURE;
$response->error_message = 'User does not exist';
}
}

关于来自外部应用程序的 Joomla 登录身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2176595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com