2011-01-26 65 views
1

我有一個自制用戶模塊的Web應用程序。用戶存儲在MySQL數據庫中,密碼爲二進制編碼(默認sha256,但是我們支持其他算法;例如密碼存儲爲MD5字符串)。Zend OpenId提供程序與自定義用戶

到目前爲止好,但現在我們要採取行動我們作爲OpenID提供商的應用,提供從我們的用戶模塊的賬戶。

由於我們使用Zend框架我猜它不應該是很難寫使用一個數據庫後端的自定義存儲adapater(即OurNamespace_OpenId_Provider_Storage_Db延伸Zend_OpenId_Provider_Storage)然而Zend_OpenId_Provider ::登錄(ID,密碼)被delagating到Zend_OpenId_Provider_Storage :: checkUser( id,md5(id.password))

所以在OurNamespace_OpenId_Provider_Storage_Db :: checkUser()第二個參數,密碼,提供爲md5字符串,包括鹽(openid),我無法在我們自己的用戶表中檢查..密碼存儲不同...

會是什麼來解決這個問題/解決方法是常見/最佳做法?

在此先感謝!
//羅蘭

+0

請你分享一些代碼究竟如何訪問OpenID提供商? – akond 2011-01-26 18:39:18

回答

1

我有同樣的問題,因爲你。由於我們不能只擴展Zend_OpenId_Provider並覆蓋checkUser(),所以我以一種難看的方式修復了它。

我複製Zend_OpenId_Provider到NameSpace_OpenId_Provider,編輯checkUser(),以及用於該網址。

PS:有人提起了錯誤,也許我們將看到的東西出來。 http://framework.zend.com/issues/browse/ZF-10232