调用JFactory :: getApplication() - >登录更改用户的密码

时间:2014-03-18 21:18:56

标签: joomla login passwords custom-component

我已经按照this教程在Joomla 2.5.19中创建了一个组件。我已经修改了一些代码以满足我的需求。我改变了

$response = $auth->authenticate($credentials, $options);

JFactory::getApplication()->logout(null, $options);
$authorized = JFactory::getApplication()->login($credentials, $options);

但是这次登录调用会更改用户的密码。有没有人有任何线索,为什么它表现得像这样。

注意:我还安装了最新版本的JomSocial。

谢谢,

3 个答案:

答案 0 :(得分:2)

密码本身没有变化,发生的事情是在存储到数据库之前密码的方法哈希已经改变。具有旧哈希的现有密码的用户在登录时会更改哈希值。如果您将JUser API与您的身份验证系统一起使用,这将无缝地工作,您只会知道如果您查看数据库就会发生这种情况。

答案 1 :(得分:1)

我只是简要回顾了您在教程中发布的链接,乍一看这不是在Joomla中实现外部身份验证的正确方法。您应该编写一个身份验证插件,该插件可以挂钩到核心事件中,并与框架无缝集成。

虽然从长远来看,通过反对框架,你绝对可以使这种方法“有效”;维护代码可能会变得越来越困难。

以下链接适用于Joomla 3.2,但概念适用。我建议逆向工程现有的核心身份验证插件。

如果您选择继续使用组件方法,请查看com_users登录控制器和模型,以便他们处理登录帖子。两者都应该有相关的方法。

http://docs.joomla.org/J3.2:Creating_an_Authentication_Plugin_for_Joomla

答案 2 :(得分:0)

我在艾琳的帮助下想出来了......

原来是rehash ...在Joomla 2.5.19中,(libraries / joomla / user / helper.php)JUserHelper :: verifyPassword()实际上是在数据库中重新更新和更新密码。

谢谢@Elin。你可以提交评论作为答案,所以我可以接受:)