当用户在 Django 中注销时,如何拒绝访问上一页?
How deny access to the previous page when a user have logged out in django?
我是 django 的新手,我在 Ubuntu 服务器中使用 1.8 版本,我成功地完成了登录和注销过程,但是当我的用户尝试转到上一页时,他们可以将其视为匿名用户。我怎样才能拒绝访问?
我尝试在我的 views.py 上使用 if,但不起作用:
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")
希望有人能帮助我。
编辑:
我正在使用 django 的默认 url 登录和注销。
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'),
您可以使用隐藏模板,
{% 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
这将在用户注销后清除缓存。
我使用一个简单的脚本解决了这个问题,该脚本会在用户注销 "clear" 缓存时重新加载,这可能不是正确的方法,但对我有用,我会尝试继续寻找更好的方法来做到这一点。如果有人知道,请分享。
我是 django 的新手,我在 Ubuntu 服务器中使用 1.8 版本,我成功地完成了登录和注销过程,但是当我的用户尝试转到上一页时,他们可以将其视为匿名用户。我怎样才能拒绝访问?
我尝试在我的 views.py 上使用 if,但不起作用:
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")
希望有人能帮助我。
编辑: 我正在使用 django 的默认 url 登录和注销。
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'),
您可以使用隐藏模板,
{% 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
这将在用户注销后清除缓存。
我使用一个简单的脚本解决了这个问题,该脚本会在用户注销 "clear" 缓存时重新加载,这可能不是正确的方法,但对我有用,我会尝试继续寻找更好的方法来做到这一点。如果有人知道,请分享。