2013-03-22 18 views
8

Czy są jakieś aplikacje django wymuszające na użytkownika hasło użytkownika po upływie pewnego czasu, np. 30 dni? Używam autoryzacji djangp i chcę ją rozszerzyć lub użyć aplikacji społecznościowej.Django wymuszenie ważności hasła

Co próbowałem dotąd:

  1. Dodane pole do profilu użytkownika do przechowywania datę ostatniej hasło aktualizowana.
  2. Rozszerzona metoda logowania w celu sprawdzenia tej daty i przekierowania użytkownika na stronę zmiany hasła.

Co Jestem zagubiony:

  1. Aby zablokować użytkownikowi dostęp do serwisu do zmiany hasła.
  2. Użytkownik nie powinien być w stanie się zalogować lub po prostu wpisać adresy URL, aby uzyskać bezpośredni dostęp do strony.

Należy pamiętać, że nie chcę używać oprogramowania pośredniego, ponieważ będzie to ograniczenie zasobów.

Odpowiedz

9

Wydajesz się na dobrej drodze. Ustaw datę ostatniego hasła zaktualizowanego, sprawdź, czy timedelta jest większa niż 30 dni, jeśli tak, przekieruj stronę zmiany hasła. Twój widok logowania powinien pozostać taki sam, z wyjątkiem faktu, że nie logujesz użytkownika do obiektu żądania, jeśli timedelta jest dłuższy niż 30 dni.

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. 
+0

Ma to sens, Matt. Spróbuję tego. Dzięki –

Powiązane problemy