Silex / Symfony2记住我身份验证用户界面RedBean Wrapper

时间:2013-03-14 03:06:01

标签: security symfony silex remember-me redbean

我一直在尝试使用RedBean ORM(http://redbeanphp.com)来实现Silex安全提供程序包的UserInterface和UserProviderInterface。

由于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

原始测试:

/vendor/silex/silex/tests/Silex/Tests/Provider/RememberMeServiceProviderTest.php

1 个答案:

答案 0 :(得分:4)

问题在于我的自定义UserProvider的supportsClass方法。我没有考虑到名字空间。看起来这个函数没有被调用进行基本身份验证,但是对于记住我的提供者来说是必需的。