Javascript 禁用浏览器&x27;背面';注销后的按钮?
我将python与django一起使用,我希望在用户注销后单击后退按钮时将用户重定向到登录页面。如何做到这一点?在哪里写代码 为了测试django admin是否能处理这个问题,我登录到django admin,注销,然后点击back按钮,我就可以看到上一页了。为什么django管理员不处理这个问题 这是django admin中注销的ccode:Javascript 禁用浏览器&x27;背面';注销后的按钮?,javascript,python,django,django-admin,Javascript,Python,Django,Django Admin,我将python与django一起使用,我希望在用户注销后单击后退按钮时将用户重定向到登录页面。如何做到这一点?在哪里写代码 为了测试django admin是否能处理这个问题,我登录到django admin,注销,然后点击back按钮,我就可以看到上一页了。为什么django管理员不处理这个问题 这是django admin中注销的ccode: def logout(request): """ Removes the authenticated user's ID from the r
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()
这取决于您使用的是哪种身份验证系统。如果您使用某种自己的impl,您可以编写自己的
中间件类,将未经身份验证的用户重定向到登录页面
如果您正在使用某些lib,请检查其文档,了解它如何处理未经身份验证用户对安全页面的请求。在您注销并回击后,您可以打开管理页面的原因是,您看不到真实页面。而是在浏览器缓存中看到它的副本
试试这个:
转到任何管理页面
单击“注销”
点击浏览器中的“后退”按钮
按F5键或在浏览器中单击“刷新”
现在,您将被重定向到管理员后端的登录页面。最终找到了解决方案:
from django.views.decorators.cache import cache_control
@cache_control(no_cache=True, must_revalidate=True)
def func()
#some code
return
这将强制浏览器向服务器发出请求。您可能会发现需要在chrome中使用@cache\u控件(no\u cache=True、must\u revalidate=True、no\u store=True)来完全停止任何后退按钮查看
关键是没有chrome商店,我在这里找到了数字蛋糕的答案!这也解决了在FireFox上注销后备份到缓存页面的问题。我试过:
@缓存控制(无缓存=真,必须重新验证=真)
在我看来没有运气。每个数字蛋糕,尝试:
@缓存控制(无缓存=真,必须重新验证=真,无存储=真)
现在Firefox返回到登录屏幕。我知道这是一个老问题,但被接受的答案对我来说并不适用。我也面临同样的问题(使用django 1.8和Chrome)
最后,我从(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\u required
装饰器用于处理问题。您可以在文档中查看更多信息这是一个缓存问题
您可以使用cache_control decorator强制在视图上不缓存:
from django.views.decorators.cache import cache_control
@cache_control(no_cache=True, must_revalidate=True, no_store=True)
def func()
# some code
return
这将强制浏览器向服务器发出请求
更多关于我粘贴的代码是django.contrib.auth.logout。这不是我自己的代码。我只使用django admin。这个问题存在于django管理员中。哦,天哪…*现在*我明白你的问题了。我将重写我的答案。我知道如果单击“后退”按钮,将不会向服务器发送任何请求。但我仍然不希望用户像google doesOk一样看到该页面,我想这是您需要的:@GeorgeK它确实有效!尝试将装饰器也放在登录视图上。不适用于Safari 13.0.3(Mac OS X Catalina 10.15.1)不适用于Safari 13.0.3(Mac OS X Catalina 10.15.1)不适用于Safari 13.0.3(Mac OS X Catalina 10.15.1)