デフォルトでは、パスワードはauth_user
に挿入されるときにハッシュされます テーブル(パスワードフィールドに関連付けられたフォームバリデーターを介して)。したがって、プレーンテキストのパスワードをテーブルに標準SQLで挿入することは望ましくありません(安全でないだけでなく、Auth
が原因で、その後のログイン試行は失敗します。 ハッシュ化されたパスワードを期待しています。
一括挿入を行うときにハッシュを実行する最も簡単な方法は、レコードをループして、.validate_and_insert
を使用して各レコードを挿入することです。 方法。これにより、すべてのフィールドバリデーターが実行され(パスワードがハッシュされます)、検証に失敗したレコードは挿入されません(たとえば、検証に失敗するため、重複するユーザー名は挿入されません)。
for user in db(db.user).select():
db.auth_user.validate_and_insert(username=user.username, password=user.password)
検証プロセスでは重複するユーザー名は自動的に拒否されますが、重複が多いことが予想され、効率を向上させたい場合は、最初にuser
から重複していないユーザーのみを選択できます。 テーブル:
users = db(~db.user.username.belongs(db()._select(db.auth_user.username))).select()
for user in users:
db.auth_user.validate_and_insert(username=user.username, password=user.password)
また、デフォルトでは、auth_user
テーブルにはfirst_name
の値が必要です 、last_name
、およびemail
フィールド(および一部のAuth
には有効なメールアドレスが必要です パスワードのリセットなどの機能)。したがって、これらのフィールドにも入力するか、requires
を設定する必要があります。 None
の属性 したがって、検証は失敗しません。例:
db.auth_user.first_name.requires = None
別のオプションは、カスタムのauth_user
を定義することです。 テーブル。