3

django カスタム認証バックエンドを実装しました。私のauthenticate()はこのようなユーザー オブジェクトを返しますが、return User(username=username, password=password)ユーザー オブジェクトをデータベースに保存することはありません。

  1. django ドキュメントがユーザー オブジェクトを使用してデータベースを作成することを推奨するのはなぜですか? (https://docs.djangoproject.com/en/1.4/topics/auth/#writing-an-authentication-backend - "...これに対処する最善の方法は、ユーザーごとに Django ユーザー オブジェクトを作成することです。あなたのバックエンドのために存在します...」)

  2. login()を呼び出そうとすると、データベースへの呼び出しが行われます。ログインがセッションに保存されている場合、なぜデータベースが必要なのですか? (キャッシュされたセッションを使用)

4

2 に答える 2

4

オブジェクトを特に保存する必要がある理由Userは、アプリがオブジェクトとユーザーの間にデータベース レベルの関係を作成することが一般的であるためです (複数の要求間で関係を維持するため)。

簡単な例は、 のアクティビティ ログですdjango.contrib.admin。ユーザーが実行した最近の行動が表示されます。これは、ユーザー オブジェクトがデータベースに保存されている場合にのみ機能します。

于 2012-06-03T23:14:04.200 に答える
2

auth.Userかなりの数のアプリが;への外部キーを持っています。そのテーブルにデータが入力されていない場合、それらのアプリを使用することはできません。

于 2012-06-03T23:12:30.960 に答える