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

标签 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 应用程序获取反馈的最佳方式吗?

最佳答案

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

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

关于jsp - Joomla 2.5 自定义身份验证插件,通过外部 jsp 网站进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11843535/

相关文章:

java - 找不到 Struts 调度程序

javascript - Auth0 与 Angular 4 登录错误

php - 使用 CakePHP,您如何在用户登录时隐藏页面的某些元素?

java - spring-ws 如何给请求体中的soap action 添加一个属性

xml - XmlDictionaryReader 真的可以处理二进制 XML 吗?如果不是,那是什么?

linux - 在 Liferay 7 中使用 apache-cxf Web 服务时出现链接错误

java - struts2中如何使用Ajax上传Imagefile

jsp - 如何在包含的页面中使用声明的变量?

java - Struts setter方法错误的参数传递

python - Django:自动创建用户配置文件时,它的设置是什么?