Я написал небольшую часть промежуточного программного обеспечения, которое ловит, если пользователь использует временный пароль, и, если да, перенаправляет его на страницу, которая вынуждает его создать новый пароль. Моя проблема в том, что страница работает нормально, когда пользователь вошел в систему и НЕ использует временный пароль (т.е. они переходят на URL смены пароля вручную), но когда они используют временный пароль, перенаправление из промежуточного программного обеспечения приводит к 403 Запрещенной странице .
Промежуточное программное обеспечение делает еще одну вещь в process_view после проверки временного пароля, но это соответствующий код:
class MyMiddleware( object ):
def process_view( self, request, view_func, view_args, view_kwargs ):
if request.user.is_authenticated( ):
try:
if request.user.get_profile( ).using_temp:
return HttpResponseRedirect( reverse( 'change_password' ) )
except Object.DoesNotExist:
pass
# Not using temp password, let the request process
return None
Обратите внимание, что визуализация шаблона напрямую может использоваться с чем-то вроде render_to_response, чтобы исправить проблему, но это приведет к тому, что URL браузера не будет следовать, а также не сможет по-настоящему выйти из страницы, которую он отображает.