🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3874閲覧

1ユーザが試行回数以上ログイン失敗すると、全ユーザがログインできずにロックされる

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/11/19 07:58

編集2019/12/06 05:55

お世話になります。django-axesを導入しました。win10のローカル環境で実施になります。
例えば以下ユーザを作成したとします。
user1@gmail.com
user2@gmail.com
user3@gmail.com
user1@gmail.comが試行回数を超えると
user2@gmail.com
user3@gmail.comもログインできなくなりロックのtemplate.htmlへ画面遷移し困っています。
user1@gmail.comが試行回数を超えると
user1@gmail.comだけがロックさせるにはどのように設定したらいいのでしょうか?

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # Axes app can be in any position in the INSTALLED_APPS list. 'axes', ] AUTHENTICATION_BACKENDS = [ # AxesBackend should be the first backend in the AUTHENTICATION_BACKENDS list. 'axes.backends.AxesBackend', # Django ModelBackend is the default authentication backend. 'django.contrib.auth.backends.ModelBackend', ] MIDDLEWARE = [ # The following is the list of default middleware in new Django projects. 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', # AxesMiddleware should be the last middleware in the MIDDLEWARE list. # It only formats user lockout messages and renders Axes lockout responses # on failed user authentication attempts from login views. # If you do not want Axes to override the authentication response # you can skip installing the middleware and use your own views. 'axes.middleware.AxesMiddleware', ]

実行して構成を確認 python manage.py check
実行してデータベースを同期python manage.py migrate
上記は実施済です。解除すると通常のログインできる事は確認済です。
キャッシュ設定は以下です。テスト環境でのaxes導入の為、
127.0.0.1でのIPだと
user1でも
user2でも
user3でも
すべてログインができないという事なのでしょうか?
パスワード入力の試用回数を超えたユーザに対してIPチェックを実施し該当IP(127.0.0.1)ではログイン不可にする。さらに同じIPでは異なるユーザ名によるログイン拒否も実施されているという事でしょうか?

CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', }, 'axes_cache': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', } } AXES_CACHE = 'axes' AXES_FAILURE_LIMIT = 5 AXES_LOCKOUT_TEMPLATE = 'locked.html' AXES_COOLOFF_TIME = 24 AXES_LOGGER = 'custom_logger'

本家
https://django-axes.readthedocs.io/en/latest/3_usage.html
参考URL
https://medium.com/creditengine-tech/django-axes%E3%81%A7%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%83%AD%E3%83%83%E3%82%AF%E6%A9%9F%E8%83%BD%E4%BB%98%E3%81%8Ddjango%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E9%96%8B%E7%99%BA%E3%81%99%E3%82%8B-e5414cc674e0
宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

django-axesは、デフォルトでIPアドレス単位でのロックが実施されているため、質問者様の仰る通り同じIPであれば1ユーザがロックされると他のユーザでもログインできなくなります。
settings.pyに AXES_ONLY_USER_FAILURES = True を追加することでユーザー名毎のロックに切り替えることができます。

参考
https://django-axes.readthedocs.io/en/latest/4_configuration.html

投稿2019/11/28 05:10

NatsuToku

総合スコア103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/28 05:14

ありがとうございます
退会済みユーザー

退会済みユーザー

2019/11/28 05:17 編集

質問1 お手数ですがユーザ名ごとのロックを解除する方法も教えていただけないでしょうか? 質問2 例えば以下IPとユーザがいたとします。 1.1.1.1 waruA 1.1.1.1 waruB 2.2.2.2 goodC 3.3.3.3 goodD AXES_ONLY_USER_FAILURES = True を設定した場合でも 1.1.1.1のIPなら全てロックされるという事ですか? それともWARUAだけがロックされるという事でしょうか? つまりWARUBはログインできる状況ですか?
退会済みユーザー

退会済みユーザー

2019/11/28 05:18

本番ではIPでロックする事は非常に便利ですよね。 ただ開発環境だと全部同じIPなので全部ロックされてしまいます。 AXES_ONLY_USER_FAILURES = True を開発環境だけ使えば goodCさんやgoodDさんは利用できるのであれば便利だなと
NatsuToku

2019/11/28 05:27 編集

質問1 コマンドラインなら以下のコマンドで解除できます。 $ python manage.py axes_reset_username [username ...] あとはdjango-axesの管理画面をadmin siteに追加して管理画面からロックを解除する方法もありますが、 こちらは設定などの説明が長くなるので省略します。 参考 https://django-axes.readthedocs.io/en/latest/3_usage.html#resetting-attempts-from-command-line 質問2 AXES_ONLY_USER_FAILURES = True の場合はIPアドレスが同じでもユーザ名のみで判定されます。 そのため上記の条件であればwaruAのみがロックされます。
退会済みユーザー

退会済みユーザー

2019/11/28 05:58

非常にわかりやすい説明でした。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問