2011-01-26 66 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