これまでのステップでデータベースのテーブルがいくつか作成されました.ここでは,作成された auth_user テーブルにユーザ情報を登録します.将来的にはシステムの管理者がユーザ登録を行ったり,ユーザ自身が登録できるような機能が必要になるはずですが,ここではテストユーザとなる3名のユーザ情報を shell を使って登録します.
ここで登録するユーザの情報は次の表の通りです.
ユーザ名 | メールアドレス | パスワード |
---|---|---|
user_a | a@sample.com | password |
user_b | b@sample.com | password |
user_c | c@sample.com | password |
シェルを使って次の通りユーザを登録していきます.
(py39) C:\Users\lecture\Documents\django\django_comment_auth>python manage.py shell ⏎ Python 3.9.12 (main, Apr 4 2022, 05:22:27) [MSC v.1916 64 bit (AMD64)] Type 'copyright', 'credits' or 'license' for more information IPython 8.3.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: from django.contrib.auth.models import User ⏎ In [2]: user = User.objects.create_user('user_a', 'a@sample.com', 'password') ⏎ In [3]: user.save() ⏎ In [4]: user = User.objects.create_user('user_b', 'b@sample.com', 'password') ⏎ In [5]: user.save() ⏎ In [6]: user = User.objects.create_user('user_c', 'c@sample.com', 'password') ⏎ In [7]: user.save() ⏎ In [8]: exit() ⏎ (py39) C:\Users\lecture\Documents\django\django_comment_auth>
データベースのテーブルを表示して登録されたユーザ情報を確認します.
(py39) C:\Users\lecture\Documents\django\django_comment_auth>sqlite3 db.sqlite3 ⏎ SQLite version 3.38.2 2022-03-26 13:51:10 Enter ".help" for usage hints. sqlite> .tables ⏎ auth_group auth_user_user_permissions auth_group_permissions django_admin_log auth_permission django_content_type auth_user django_migrations auth_user_groups django_session sqlite> .headers ON ⏎ sqlite> .schema auth_user ⏎ CREATE TABLE IF NOT EXISTS "auth_user" ( "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "password" varchar(128) NOT NULL, "last_login" datetime NULL, "is_superuser" bool NOT NULL, "username" varchar(150) NOT NULL UNIQUE, "last_name" varchar(150) NOT NULL, "email" varchar(254) NOT NULL, "is_staff" bool NOT NULL, "is_active" bool NOT NULL, "date_joined" datetime NOT NULL, "first_name" varchar(150) NOT NULL ); sqlite> select * from auth_user; ⏎ id|password|last_login|is_superuser|username|last_name|email|is_staff|is_active|date_joined|first_name 1|pbkdf2_sha256$320000$W6LTnkmvRz9ZyP3WOCKul9$8rhGgvniFX3IvlDtqoKONbKGx0dgyCh/z0q18SnHttw=||0|user_a||a@sample.com|0|1|2022-07-27 18:16:33.539283| 2|pbkdf2_sha256$320000$70ab5GzMyXE5ji0yTvbfVQ$Kc/C4cP1GBxyScyw1d5QvXPxiRmH+A3nf4fxNBWTPvo=||0|user_b||b@sample.com|0|1|2022-07-27 18:16:44.852917| 3|pbkdf2_sha256$320000$jhkm7V1bNgaRjM5433ePrG$Bmvxi/otofgb4E541yt3C7jCxL3xs9oOPrI3bluuHHQ=||0|user_c||c@sample.com|0|1|2022-07-27 18:16:57.035969| sqlite> select id, username, email from auth_user; ⏎ id|username|email 1|user_a|a@sample.com 2|user_b|b@sample.com 3|user_c|c@sample.com sqlite> select password from auth_user; ⏎ password pbkdf2_sha256$320000$W6LTnkmvRz9ZyP3WOCKul9$8rhGgvniFX3IvlDtqoKONbKGx0dgyCh/z0q18SnHttw= pbkdf2_sha256$320000$70ab5GzMyXE5ji0yTvbfVQ$Kc/C4cP1GBxyScyw1d5QvXPxiRmH+A3nf4fxNBWTPvo= pbkdf2_sha256$320000$jhkm7V1bNgaRjM5433ePrG$Bmvxi/otofgb4E541yt3C7jCxL3xs9oOPrI3bluuHHQ= sqlite> .exit ⏎ (py39) C:\Users\lecture\Documents\django\django_comment_auth>
パスワードは NIST が推奨する PBKDF2 アルゴリズムと SHA256 ハッシュにより保護されています.パスワードは 【<アルゴリズム>$<イテレーション回数>$<ソルト>$<ハッシュ>】 の形式で保存されています.3名のユーザが同じパスワード「password」を設定していますが,ソルトが異なるので結果的には異なるハッシュとして保存されていることに注意してください.Django のパスワード管理についての詳細はこちらを参照してください.
次のページではログインやログアウト機能を実装していま作成したユーザを認証できるようにしてみよう.