2013-03-22 5 views
8

30 일과 같은 특정 간격 후에 강제로 사용자의 암호가 만료되는 장고 응용 프로그램이 있습니까? 나는 djangp의 권한을 사용하고 있으며 그것을 확장하거나 커뮤니티 응용 프로그램을 사용하고자합니다. 내가 지금까지 시도 무엇Django 강제 암호 만료

:

  1. 추가 마지막으로 업데이트 된 암호의 날짜를 저장하는 사용자 프로필 필드.
  2. 로그인 방법을 확장하여이 날짜를 확인하고 사용자를 비밀번호 변경 페이지로 리디렉션하십시오. 암호가 변경 될 때까지

    1. 사이트에 액세스하는 사용자를 차단하려면 : 나는 대한 혼란 스러워요 무엇

    .

  3. 사용자는 로그인하거나 페이지에 직접 액세스하기 위해 urls를 입력하면 안됩니다.

리소스 제약 조건이므로 미들웨어를 사용하고 싶지 않습니다.

답변

9

올바른 길을 가고 있습니다. 마지막으로 암호를 업데이트 한 날짜를 설정하고 암호 변경 페이지로 리디렉션되는 경우 timedelta가 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. 
+0

이 매트, 의미가있다. 나는 이것을 시도 할 것이다. 감사 –