1

Symfony2 のカスタム認証メカニズムに苦労しています。

やりたいこと: 通常の UsernamePasswordForm ベースの認証の動作を変更する必要があります。必要な唯一の変更は、資格情報がデータベースに対してチェックされるのではなく、いくつかのカスタム UNIX 認証デーモンに対してチェックされることです。ユーザー自体はまだデータベース内にあります。

私がやったこと:このSymfony クックブック エントリ に基づいて本格的なカスタム認証プロバイダーを試し、ほとんどの部分でさまざまな UsernamePassword クラスを拡張するだけでしたが、まだうまくいきませんでした。UsernamePasswordFormAuthenticationListener多くの必須パラメーターがあるため、サービス構成で AuthenticationListener を設定する際に特に問題がありました。現在、データベースのセットアップに問題があるため、最終的にうまくいくかどうかはわかりません。

必要なもの: 完全な AuthenticationProvider を完全に必要とせずに、デフォルトのログインフォームを変更する簡単な方法はありますか? デフォルトの動作にいくつかのカスタム変更を加えることは、非常に一般的な問題です。

アイデアやヒントがあれば幸いです。

4

2 に答える 2

0

私はこれを自分で試したことはありませんが、パラメーターを設定することで独自の AuthenticationProvider を挿入できるはずです。

   security.authentication.provider.dao.class:
   ..Security\Core\Authentication\Provider\MyDaoAuthenticationProvider

プロバイダーは Dao を拡張し、checkAuthentication をオーバーライドします。

繰り返しますが、私は実際にこれを行ったことはなく、セキュリティ システムは非常に扱いにくいため、機能する場合と機能しない場合があります。

于 2013-03-28T15:09:29.803 に答える
0

自分の質問に答える: 解決策を示すこのブログ投稿のおかげで、ようやく問題を解決できました。基本的な考え方は、デフォルトのフォーム ログイン認証を拡張し、そのリスナーを「盗む」ことです。このようにして、既存のコードのほとんどを再利用できます。重要な部分は、 および の作成と構成AuthenticationProviderですSecurityFactoryform_loginの代わりに独自のプロバイダー キーを使用することをお忘れなくsecurity.yml

ブログ投稿では、作成者が独自の を作成してUserProviderいますが、デフォルトのデータベースでも動作しています。

于 2013-04-05T15:23:54.400 に答える