11

30日などの一定の間隔でユーザーのパスワードを強制的に期限切れにするdjangoアプリはありますか? 私は djangp の認証を使用しており、それを拡張するか、コミュニティ アプリを使用したいと考えています。

私がこれまでに試したこと:

  1. 最後にパスワードが更新された日付を保存するためのフィールドがユーザー プロファイルに追加されました。
  2. ログイン方法を拡張して、この日付を確認し、ユーザーをパスワード変更ページにリダイレクトしました。

私が混乱していること:

  1. パスワードが変更されるまで、サイトにアクセスするユーザーをブロックします。
  2. ユーザーがログインしたり、URL を入力してページに直接アクセスしたりできないようにする必要があります。

リソースの制約になるため、ミドルウェアを使用したくないことに注意してください。

4

2 に答える 2

13

あなたは正しい軌道に乗っているようです。最後にパスワードが更新された日付を設定し、timedelta が 30 日を超えているかどうかを確認します。30 日を超えている場合は、パスワードの変更ページにリダイレクトします。ログイン ビューは、timedelta が 30 日を超える場合にユーザーをリクエスト オブジェクトに実際にログインさせないことを除いて、基本的に同じままにする必要があります。

from datetime import date, timedelta
from django.contrib.auth import authenticate, login

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            if date.today() - user.password_date > timedelta(days=30):
                # Redirect to password change page
            else:
                login(request, user)
                # Redirect to a success page.
        else:
            # Return a 'disabled account' error message
    else:
    # Return an 'invalid login' error message.
于 2013-03-22T13:52:47.100 に答える
0

さて、django-passwords-policies があります。http://tarak.github.io/django-password-policies/topics/force.password.change.html

于 2015-05-30T20:20:45.357 に答える