我的网站有登录功能,但不幸的是,即使没有登录,仍然可以通过输入 URL 访问私人页面。我很担心这个安全漏洞,想知道如何防止用户没有先登录就访问私人页面。你能就如何解决这个问题提供任何建议或指导吗?
我向 ChatGPT 寻求帮助。它建议将“login_required”放在“def”之前,但它不起作用。
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return HttpResponseRedirect('/Händlerpage/
else:
return render(request, 'login.html', {'error_message': 'Ungültiger Login'})
else:
return render(request, 'login.html')
@login_required
def Händlerpage(request):
return render(request,'Händlerpage.html')
在您的模板中,尝试使用:
{% if user.is_authenticated %} <div></div> {% endif %}
对于每个未验证(=未登录)的用户,
<div></div>
都会消失
顺便说一句,您可以删除“@login_required”。
根据个人经验,使用 ChatGPT for Django 90% 的时间都行不通。
如果你想像这样使用装饰器,你必须通过登录网址:
@login_required(login_url="/login_view/")
def Händlerpage(request):
return render(request,'Händlerpage.html')
如果用户未登录系统,这将阻止用户访问此页面,并且他们将被重定向到登录页面。参考Doc
您可以在
LOGIN_URL
中定义settings.py
的另一个选项,然后您可以
使用装饰器而不指定您之前尝试过的 url:
LOGIN_URL = "/login_view/"