【问题标题】:Joomla 2.5 onAfterInitialise event not being triggeredJoomla 2.5 onAfterInitialise 事件未被触发
【发布时间】:2015-11-07 02:33:12
【问题描述】:

我正在尝试编写一个单点登录扩展程序,以便我们拥有正确权限的 MediaWiki 用户无需登录到我们的 Joomla 2.5。我无法让它工作,因为 onAfterInitialise 事件不会触发(如果我尝试使用它们,onAfterRoute 或 onAfterDispatch 也不会触发)。我知道扩展程序实际上正在运行,因为 onUserAuthentication 事件正在触发并以我的测试用户身份登录。

下面是我的两个事件的代码,第一个不会触发并执行 die() 语句,第二个在登录后触发并无条件正确地验证我。

我在这里遗漏了什么,比如一个扩展程序不能使用两种不同类别的事件之类的吗?

class plgAuthenticationMwSSO extends JPlugin {

    function __construct( &$subject, $config ) {
        parent::__construct( $subject, $config );
    }

    public function onAfterInitialise() {
        die('testing');
    }

    public function onUserAuthenticate( $creds, $opt, &$response ) {
        $response->username = 'Foo';
        $response->fullname = 'Foo Bar';
        $response->email = 'foo@bar.baz';
        $response->status = JAuthentication::STATUS_SUCCESS;
        $response->error_message = '';
    }
}

【问题讨论】:

  • 嗨!您可以通过在专用站点http://joomla.stackexchange.com/ 获得更多详细信息和更多答案
  • 谢谢艾琳!这就是问题所在,我已经把它做成了一个包含两个插件的包,现在它正在工作。也感谢 miroxlav 的链接,那里有很多很好的信息:-)
  • 我会回答这个问题。

标签: joomla joomla2.5


【解决方案1】:

您需要将onAfterInitialise 放入系统插件中。作为一个平行的例子,请注意 Remember 插件是一个 system 插件,然后 Cookie 插件是一个 authentication 插件。系统插件在堆栈中的早期检查,并在每次页面加载时检查。身份验证插件在身份验证开始时被检查,并在特定时间作为一个组专门加载。由于您有一个身份验证插件,因此它不会在正确的时间触发以响应您正在寻找的系统事件。

【讨论】:

  • 它现在可以工作了,结果证明我根本不需要使用身份验证插件,我只是在 onAfterInitialise 事件中使用了 $session->set ,这样就永远不会调用 onUserAuthenticate : -)
猜你喜欢
  • 2013-05-29
  • 1970-01-01
  • 2014-06-23
  • 2011-12-30
  • 2022-12-03
  • 2013-08-02
  • 2013-10-02
  • 2013-03-10
  • 1970-01-01
相关资源
最近更新 更多