2

我有一个 Joomla 网站和一个 Java/jsp 网站。我正在尝试为 Joomla 创建一个自定义身份验证插件,以从我的 jsp 应用程序中获取身份验证详细信息。

onUserAuthenticate()所以作为第一次尝试,我在默认的 joomla 身份验证插件类中编辑了我的函数。

function onUserAuthenticate($credentials, $options, &$response)
{
    $response->type = 'joomla';
    // Joomla does not like blank passwords
    if (empty($credentials['password'])) {
        $response->status = JAuthentication::STATUS_FAILURE;
        $response->error_message = JText::_('JGLOBAL_AUTH_EMPTY_PASS_NOT_ALLOWED');
        return false;
    }else{
        $response->status = JAuthentication::STATUS_SUCCESS;
        return true;
    }
}

正如我猜想的那样,它应该适用于任何凭据,但它不是......
我已经有一个用户被调用admin,并且登录现在正在使用 username 的任何密码admin。但这不是我所期望的。我需要使用anything用户名和anything密码登录。

作为第一次尝试,我需要完全停止访问默认的 joomla 数据库以获取凭据。但身份验证脚本仍在寻找本地数据库。请帮我解决这个问题。
如果你能提出一个与jsp网站沟通的好方法,也很感激。

我将尝试使用 SOAP,如下所示:

   $credentials = array(
      'memberNumber' => $credentials['username'],
      'password'     => $credentials['password']
      );
   $client = new SoapClient('http://example.com/soap.wsdl', $credentials);

这是从我的 jsp 应用程序中获取反馈的最佳方式吗?

4

1 回答 1

2

访问数据库的不是 joomla 身份验证插件(在您编辑之后)。如果您查看/plugins/user/joomla/joomla.php,您会发现在onUserAuthenticate() 之后触发的onUserLogin() 方法。这是创建用户会话并填充 JUser 对象实例的一种。

即使您强制成功登录用户仍将被视为访客,因此您也需要破解 onUserLogin() 。你的 SOAP 尝试对我来说看起来不错

于 2012-08-07T17:02:20.373 回答