2014-03-18 49 views
0

我遵循this教程在Joomla 2.5.19中創建一個組件。我修改了一下代碼以適合我的需求。我已經改變調用JFactory :: getApplication() - >登錄更改用戶密碼

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

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

但這呼叫登錄修改用戶的密碼。有沒有人有任何線索,爲什麼它的行爲如此。

注意:我還安裝了最新版本的JomSocial。

感謝,

+1

你是什麼意思的「更改密碼」?你的意思是改變哈希密碼或實際改變密碼本身。後者似乎非常不可能。由於採用了更強大的加密技術,預計前者會有所增加。 – Elin

+0

我已經調試了一下...... Joomla的默認組件使用更改的密碼登錄用戶。 @Elin你是對的。密碼沒有改變,但加密是。代碼中哪裏可以看到加密代碼? – sadaf

回答

2

密碼本身並沒有改變,發生的是在存儲到數據庫之前密碼的方法散列已經改變。具有舊哈希值的現有密碼的用戶在登錄時更改了哈希值。如果您將JUser API與您的身份驗證系統一起使用,那麼它將無縫工作,只有在查看數據庫時纔會知道它會發生。

1

我只簡要回顧你貼本教程的鏈接,並從乍一看,這是不實現的Joomla外部認證的正確方法。您應該編寫一個身份驗證插件,將其掛接到核心事件並與該框架無縫集成。

儘管從長遠來看,通過對框架的工作,您絕對可以使這種方法「工作」維護代碼可能變得越來越困難。

以下鏈接適用於Joomla 3.2,但這些概念適用。我會建議反向工程現有的核心認證插件。

如果您選擇繼續使用組件方法,請查看他們處理登錄帖子的com_users登錄控制器和模型。兩者都應該有相關的方法。

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

0

我與艾琳的幫助了它......

原來是老調重彈......在2.5.19的Joomla(庫/的Joomla /用戶/ helper.php )JUserHelper :: verifyPassword()實際上是重新哈希和更新數據庫中的密碼。

謝謝@Elin。你可以提交你的評論作爲答案,所以我可以接受它:)