6

私はRedBeanORM(http://redbeanphp.com)を使用して、SilexセキュリティプロバイダーパッケージのUserInterfaceとUserProviderInterfaceを実装しようとしています。

RedBean ORMがそのオブジェクトの関数を処理する方法のために、Beanオブジェクトを別のクラスでラップする必要がありました。

これは認証には最適ですが、RememberMe機能のテストに失敗します。

チェーンのどこかで、セキュリティパッケージがオブジェクトをシリアル化することに気づきました。

これがエラーの原因である可能性があると考えたため、ラッパークラスで「id」と「password」のプロパティを作成し、__ sleepメソッドと__wakeupメソッドを使用して、スリープ中にBeanを無視し、ウェイクアップ時にリロードしました。__wakeup中にすべてが正しくロードされているように見えますが、「RememberMe」機能のテストはまだ失敗しています。

コードの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

4

1 に答える 1

4

問題は、カスタム UserProvider の supportsClass メソッドにありました。名前空間を考慮していませんでした。この関数は基本認証では呼び出されないようですが、remember me プロバイダーには必要です。

于 2013-03-18T23:27:43.780 に答える