为什么我不能从我的 Django 站点上的其他计算机进行身份验证?
Why can't I authenticate from other computers on my Django site?
我用 pythonanywhere 发布了我的网站,里面有一个简单的用户登录,我创建了一个用户,当我用我自己的计算机进行身份验证时它可以工作,但是当我用另一台机器进行身份验证时,我得到这个错误:
Forbidden (403) - CSRF verification failed. Request aborted.
我的网站发布在一个域名上,其他一切正常。可能是什么问题?
一切都设置正确,具有正确的中间件、上下文、csrf 保护,因为我可以使用自己的计算机登录。
更新代码:
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
login.py
def login(request):
context = {}
if request.method == "POST":
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
auth_login(request, user)
return redirect('login')
else:
context['error'] = 'L\'utilisateur a été désactivé'
else:
context['error'] = 'Mauvais nom d\'utilisateur ou mot de passe'
return render(request, 'user.html', context)
user.html
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<p>Nom :<input type="text" class="form-control" name="username"></p>
<p>Mot de passe:<input type="password" class="form-control" name="password"></p>
<input class="submit btn btn-success pull-right" value="Se connecter" type="submit">
</form>
我按照本教程使用 Django 的内置登录解决了我的问题:
我没有找到我的 csrf
检查不工作的原因,因为控制台上没有错误,并且使用 {{ csrf_token }}
.[=13= 时令牌显示正常]
我用 pythonanywhere 发布了我的网站,里面有一个简单的用户登录,我创建了一个用户,当我用我自己的计算机进行身份验证时它可以工作,但是当我用另一台机器进行身份验证时,我得到这个错误:
Forbidden (403) - CSRF verification failed. Request aborted.
我的网站发布在一个域名上,其他一切正常。可能是什么问题?
一切都设置正确,具有正确的中间件、上下文、csrf 保护,因为我可以使用自己的计算机登录。
更新代码:
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
login.py
def login(request):
context = {}
if request.method == "POST":
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
auth_login(request, user)
return redirect('login')
else:
context['error'] = 'L\'utilisateur a été désactivé'
else:
context['error'] = 'Mauvais nom d\'utilisateur ou mot de passe'
return render(request, 'user.html', context)
user.html
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<p>Nom :<input type="text" class="form-control" name="username"></p>
<p>Mot de passe:<input type="password" class="form-control" name="password"></p>
<input class="submit btn btn-success pull-right" value="Se connecter" type="submit">
</form>
我按照本教程使用 Django 的内置登录解决了我的问题:
我没有找到我的 csrf
检查不工作的原因,因为控制台上没有错误,并且使用 {{ csrf_token }}
.[=13= 时令牌显示正常]