Отключить браузер кнопку «Назад» после выхода? - PullRequest
4 голосов
/ 03 августа 2011

Я использую python с django. Я хочу перенаправить пользователей на страницу входа, когда он нажимает кнопку «Назад» после выхода из системы. Как этого добиться? где написать код?

Чтобы проверить, обрабатывает ли администратор django это .. я вошел в администратор django .. выскочил, а затем нажал кнопку "Назад", и я могу видеть предыдущую страницу. Почему администратор django не справляется с этим.

Это код для выхода из системы администратора django:

def logout(request):
  """
 Removes the authenticated user's ID from the request and flushes their
 session data.
 """
 request.session.flush()
 if hasattr(request, 'user'):
     from django.contrib.auth.models import AnonymousUser
     request.user = AnonymousUser()

Ответы [ 6 ]

12 голосов
/ 04 августа 2011

Наконец-то найдено решение:

from django.views.decorators.cache import cache_control

@cache_control(no_cache=True, must_revalidate=True)
def func()
  #some code
  return

Это заставит браузер отправлять запрос на сервер.

9 голосов
/ 09 марта 2012

Возможно, вам понадобится использовать @cache_control (no_cache = True, must_revalidate = True, no_store = True) в Chrome для полной остановки любого просмотра кнопки «назад».

Ключевой вещью является no_store для хрома, как я нашел здесь 1

2 голосов
/ 12 августа 2016

Я знаю, что это старый вопрос, но принятый ответ не работал для меня.я столкнулся с той же проблемой (используя django 1.8 и Chrome)

Наконец, я нашел решение из docs (django 1.7 или более поздней).Это будет работать наверняка.

Просто посмотрите код ниже

from django.contrib.auth.decorators import login_required

@login_required(login_url='/login/')
def myview(request):
    return HttpResponse(render(request,'path_to_your_view.html'))

@login_required декоратор используется для решения этой проблемы.Вы можете проверить больше в документе

2 голосов
/ 25 апреля 2012

+ 1 для ответа Digital Cake! Это решило проблему резервного копирования на кэшированные страницы после выхода из системы в FireFox. Я попробовал:

@ cache_control (no_cache = True, must_revalidate = True)

на мои взгляды не повезло. За цифровой торт, пробовал:

@ cache_control (no_cache = True, must_revalidate = True, no_store = True)

и теперь Firefox выполняет резервное копирование на экран входа в систему.

2 голосов
/ 03 августа 2011

Причина, по которой вы можете перейти на страницу администратора после того, как вы вышли из системы и нанесли ответный удар, заключается в том, что вы не видите настоящую страницу. Скорее, вы видите копию этого в кэше вашего браузера.

Попробуйте это:

  1. перейти на любую страницу администратора
  2. нажмите «Выйти»
  3. нажмите кнопку "Назад" в вашем браузере
  4. нажмите F5 или нажмите «Обновить» в вашем браузере.

Теперь вы будете перенаправлены на страницу входа администратора.

0 голосов
/ 03 августа 2011

Зависит от того, какую систему аутентификации вы используете.Если вы используете какой-то собственный impl, вы можете написать собственный класс Middleware, который перенаправляет не прошедших проверку пользователей на страницу входа.

Если вы используете какую-то библиотеку lib, проверьте ее документы, как она обрабатывает запрос к защищенным страницам изнеаутентифицированные пользователи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...