Joomla 2.5自定义身份验证插件,通过外部jsp网站进行身份验证

时间:2012-08-07 10:01:45

标签: jsp authentication soap joomla joomla-extensions

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

首次尝试时,我在默认的joomla身份验证插件类中编辑了onUserAuthenticate()函数。

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的用户,登录名正在使用用户名为admin的任何密码。但这不是我的预期。我需要使用anything作为用户名并使用anything作为密码登录。

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

我将尝试使用SOAP,就像这样:

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

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

1 个答案:

答案 0 :(得分:2)

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

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