Как запретить доступ к предыдущей странице, когда пользователь вышел из Django? - PullRequest
0 голосов
/ 18 октября 2018

Я новичок в django, я использую версию 1.8 на сервере Ubuntu, я успешно выполнил вход и выход из системы, но когда мои пользователи пытаются перейти на предыдущую страницу, они могут видеть его как анонимного пользователя,Как я могу отказать в доступе?

Я пытался использовать if на своих views.py, но не работает:

def login(request):
    if not request.user.is_authenticated():
        return render(request,"base.html",{})
    return render(request,"general.html",{})

@login_required 
def general(request):
    return render(request,"general.html")

Надеюсь, кто-то может мне помочь.

РЕДАКТИРОВАТЬ: я использую стандартные URL-адреса django для входа и выхода.

url(r'^$','django.contrib.auth.views.login', {'template_name': 'base.html'}, name='login'),
url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': 'login'}, name='logout'),

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Я решил это с помощью простого скрипта, который выполняет перезагрузку в тот момент, когда пользователь выходит из системы, чтобы «очистить» кеш, вероятно, это не правильный способ сделать это, но работает для меня, я постараюсь продолжать поисклучший способ сделать это.Если кто-то знает, пожалуйста, поделитесь.

0 голосов
/ 19 октября 2018

Вы можете скрыть шаблон, используя,

{% if user.is_authenticated %}
<html></html>
{% else %}
<html> add for logged out user</html>
{% endif %}

Это позволит пользователям не видеть вашу страницу, если они нажали кнопку «Назад» после выхода из системы.

Редактировать: В вашей функции выхода из системыВы можете использовать это,

from django.views.decorators.cache import cache_control

@cache_control(no_cache=True, must_revalidate=True)
 def your_function()
   #add your code
 return

Это очистит кеш после выхода пользователя из системы.

...