Django用户在登录ou后单击浏览器后退按钮重新进入会话

2024-10-06 12:37:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Django上创建一个web应用程序。当登录用户单击“注销”时,会正确显示注销页面。但是,当单击浏览器中的“后退”按钮时,用户可以再次重新进入会话。为了解决这个问题,我跟踪了这篇文章:Disable browser 'Back' button after logout?,并使用了缓存控制。但是,用户仍然可以通过单击“后退”按钮重新进入“关闭”会话。以下是相关代码:

在视图.py公司名称:

from django.views.decorators.cache import cache_control

@cache_control(no_cache=True, must_revalidate=True, no_store=True)
def logout_view(request):

#c={}
#c.update(csrf(request))
logout(request)
#request.session.flush()
#request.user = AnonymousUser
#Redirect to logout page
return render_to_response('gamestore/logout.html')

@cache_control(no_cache=True, must_revalidate=True, no_store=True)
def login_view(request):

    #do something

在设置.py公司名称:

^{pr2}$

我不熟悉Django和Python编码,因此可能会犯一些基本错误。请帮忙


Tags: djangostoreno用户py名称truecache
2条回答

我试过这个解决办法,对我有效。我将@cache_control(no_cache=True,must_revalidate=True,no_store=True)和@login都设置为必需的,如下面的代码所示。在

记住进口现金管制。在

如果我漏掉其中一个就不行了。他们一起工作。请看下面的代码

from django.contrib.auth.decorators import login_required
from django.views.decorators.cache import cache_control
@cache_control(no_cache=True, must_revalidate=True, no_store=True)
@login_required(login_url='login')
def myview(request):
   return HttpResponse(render(request,'path_to_your_view.html'))

我使用的是django2.1,删除了'/login/'中的forwardslashes,改用了'login'

是的,即使在使用“@cache\u control”之后也不起作用

我从django1.7或更高版本的doc找到了解决方案。在

请看下面的代码

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_requireddecorator用于处理该问题。你可以在医生那里查更多。在

相关问题 更多 >