1

本質的にそれに依存しているコードから認証バックエンド ロジックを分離する最善の方法は何ですか?

ここによくある問題があります: django_auth_ldap は users テーブルを事前設定せず、LDAP に対して認証し、ユーザーが初めてログインするときにテーブルにユーザーを追加します。

ただし、プロジェクトにメンバーを追加するアプリを作成しているとします。ユーザーは、LDAP に存在するが以前にログインしたことのない他のユーザーを追加したい場合があるため、この場合はユーザー名を入力し、LDAP とデータベースにクエリを実行して、そのユーザーが存在するかどうかを確認する必要があります。繰り返しになりますが、アプリを再利用できるように作成する場合は、「ユーザー名による検索」サブルーチンを構成可能にしたいと考えています。

職場では、問題に対して 2 つの異なる解決策がありましたが、どちらも正常に機能しますが、奇妙な解決策です。

  • 必要なルックアップを行う get_user_by_username 関数を settings.py に記述できるようにします。
  • 作成した auth.User のプロキシ モデルへの「appname.modelname」パスを指定します。これは、get_user_by_username と同じことを行うクラスメソッドを持つことが期待/強制されます。

最初のものは新しい型を導入していないので少しきれいだと思いますが、それでもなお、settings.py にあるのは奇妙です。

4

1 に答える 1

2

期待される機能をカプセル化する抽象基本クラスを作成することをお勧めします。これは、C# や Java などのプログラミング言語でインターフェイスが行うように機能します。get_user_by_username次に、プロバイダーに使用するクラスを指定する django 設定を行います。

これは、将来の開発者はget_user_by_username、抽象基本クラスから派生したクラスで実装され、設定でそれを指す限り、適切と思われる場所に実装を配置できることを意味します。

于 2013-09-20T19:54:07.377 に答える