我一直在尝试使用 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
我的用户界面实现:
/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