2013-03-22 2 views
8

Есть ли приложения django для силового истечения срока действия пароля пользователя через определенный интервал, например, 30 дней? Я использую auth djangp и хочу расширить его или использовать приложение сообщества.Окончание срока действия пароля Django

То, что я пытался до сих пор:

  1. Добавлено поле для профиля пользователя для хранения даты последнего пароля обновляется.
  2. Расширенный метод входа в систему для проверки этой даты и перенаправления пользователя на страницу смены пароля.

Что я запутался:

  1. Чтобы блокировать пользователь, получающий доступ к сайту до изменения пароля.
  2. Пользователь не может войти в систему или просто ввести URL-адреса для прямого доступа к странице.

Обратите внимание: я не хочу использовать промежуточное ПО, поскольку это будет ограничение ресурсов.

ответ

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

Это имеет смысл, Мэтт. Я попробую это. благодаря –

Смежные вопросы