2013-03-14 39 views
6

我一直在尝试使用RedBean ORM(http://redbeanphp.com)来实现Silex安全提供程序包的UserInterface和UserProviderInterface。Silex/Symfony2记住我身份验证用户界面RedBean包装

由于RedBean ORM为其对象处理函数的方式,我需要将bean对象封装在另一个类中。

这对于身份验证非常有用,但未能通过测试记住我的功能。

我注意到沿着链的某个地方,安全包会序列化对象。我想也许这是错误的原因,所以我在包装类中为“id”和“password”创建了属性,并使用__sleep和__wakeup方法在睡眠期间忽略了bean,并在唤醒时重新加载它。尽管在__wakeup期间一切看似正常加载,但“记住我”功能的测试仍然失败。

我已经创建了我的代码的github存储库。如果有人有任何想法,我会很感激!

由于某些原因,RedBean,Silex和PHPUnit不允许自己被包含在存储库中。一个简单的作曲家更新应该把它们拉下来给你。如果任何人有任何想法为什么,我会很感激这个答案。

GitHub的仓库,可以发现:

https://github.com/christianmagill/silex-redbean-security

适用的文件

要在数据库中创建测试用户:

/setup.php

要运行测试:

的index.php

我的UserInterface实现的:

/src/App/Model/UserSecurityWrapper.php

我实现UserProviderInterface的:

/src/App/Model/UserProvider.php

我的修改测试:

/src/App/Test/RememberMeRedBeanServiceProviderTest.php

原测试:

/供应商/硅石/硅石/测试/捷希凯/测试/ Provider/RememberMeServiceProviderTest.php

回答

3

问题在于我的自定义UserProvider的supportsClass方法。我没有考虑到名称空间。看起来这个函数不是基本认证所要求的,但是记住我的提供者需要这个函数。