そこで、新しいSilexアプリケーションを作成し、含まれているセキュリティバンドルを使用しようとしています。簡単にするために、基本的なパスワードエンコーディングを使用しました。
Silexのドキュメントhttp://silex.sensiolabs.org/doc/providers/security.htmlに従って、カスタムユーザープロバイダーを作成しました。ただし、このユーザーインターフェイスはデフォルトのパスワードエンコーディングを使用していないようです。
パスワードを正常に取得できます
$password = $app['security.encoder.digest']->encodePassword('foo');
ただし、例を使用すると
// find the encoder for a UserInterface instance
$encoder = $app['security.encoder_factory']->getEncoder($user);
// compute the encoded password for foo
$password = $encoder->encodePassword('foo', $user->getSalt());
私は
RuntimeException:アカウントにエンコーダーが構成されていません
symfony2では、次のようなものを使用します
encoders:
somename:
class: Acme\DemoBundle\Entity\User
Acme\DemoBundle\Entity\User: sha512
Acme\DemoBundle\Entity\User: plaintext
Acme\DemoBundle\Entity\User:
algorithm: sha512
encode_as_base64: true
iterations: 5000
Acme\DemoBundle\Entity\User:
id: my.custom.encoder.service.id
しかし、ここではそうではないようです。どのタイプのsetEncoderメソッドも見つからないようですので、少し困惑しています。