Djangoにはデフォルトでユーザ管理の仕組みが搭載されており、簡単にユーザ認証機能を搭載することができます。しかし、デフォルトのユーザ認証機能は最低限の機能しか実装されていません。
この記事では、Djangoのユーザ認証機能に一定期間後に再ログインさせる制限を設定する方法を紹介します。
なお、私の環境は以下です。
- Python: 3.8 (2020/3/22 時点の最新)
- Django: 3.0.4 (2020/3/22 時点の最新)
目次
一定期間後に再ログインさせる制限とは?
ログインにはユーザ名とパスワードを使うと思いますが、ログイン成功後は一定期間は再ログインはしなくてもWebページにアクセスできると思います。
これは、ログイン成功するとサーバとの間にCookieと呼ばれる情報をやり取りして、その値が一致しているかを確認することで、ログインを省略しているからです。
これは便利な反面、Cookieが分かってしまうと、ユーザ名やパスワードがなくても、ログインが必要なWebページにアクセスできてしまう危険性があるということです。
そのため、一定期間後に再ログインを求めることで、上記のような危険性を低減することができます。
詳しいことは、「Cookieとセッションをちゃんと理解する」が分かりやすい。
実はDjangoのデフォルトの機能で再ログインさせる制限はついている!
実は、Djangoのデフォルトの機能で再ログインさせる機能は搭載されています。
しかし、デフォルトの設定では「1209600秒(2 週間)」と非常に長いです!
SESSION_COOKIE_AGE
デフォルト値: 1209600 (2 週間の秒表記)
https://docs.djangoproject.com/ja/3.0/ref/settings/#std:setting-SESSION_COOKIE_AGE
The age of session cookies, in seconds.
再ログインまでの時間を変更してみる!
上で記載したとおり、Djangoのデフォルトの設定では、再ログインまでの時間が2週間と長いので、それを変更します。
変更方法は非常に簡単で、Djangoの設定ファイル(settings.py)に対して、以下のような設定をするだけです。
【settings.py】
SESSION_COOKIE_AGE = {再ログインまでの時間(単位は秒)}
- 単位は秒なので、例えば、1時間と設定したい場合は、「
SESSION_COOKIE_AGE = 3600
」と設定します。
関連情報
Djangoのユーザ認証機能の実装方法を以下にまとめました。よろしければ、ご覧になってください。
自分は、DjangoをConoHa VPS上のDockerコンテナ上に構築しています。構築方法や挑戦したことなどを以下のブログにまとめたので、よろしければご覧になってください。
参考
広告
Djangoをやるなら以下の書籍がオススメです。
DjangoでWebアプリを開発するときの要点が分かりやすくまとめられています。
以上!
コメント