【发布时间】:2020-08-29 08:59:06
【问题描述】:
我正在使用带有 Simple JWT 的 Django REST 框架。我正在尝试创建一个用户注册页面。目前,我收到此错误
禁止 (403) CSRF 验证失败。请求中止。
失败的原因: CSRF 令牌丢失或不正确。
在settings.py下,我添加了这个:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES' : ('rest_framework.permissions.IsAuthenticated',),
'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework_simplejwt.authentication.JWTAuthentication',),
}
我的项目 urls 文件夹:
urlpatterns = [
path('admin/', admin.site.urls),
path("", include("my_api.urls")),
path('api-auth/', include('rest_framework.urls')),
path('api/token', TokenObtainPairView.as_view()),
path('api/token/refresh', TokenRefreshView.as_view()),
]
这是我的注册端点的应用视图。
def register(request):
if request.method == "POST":
email = request.POST["email"]
# Ensure password matches confirmation
password = request.POST["password"]
confirmation = request.POST["confirmation"]
if password != confirmation:
return render(request, "my_api/register.html", {
"message": "Passwords must match."
})
# Attempt to create new user
try:
# Creates a hashed password.
#password = make_password(password)
user = User.objects.create_user(username=email, email=email, password=password)
user.save()
except IntegrityError as e:
print(e)
return render(request, "my_api/register.html", {
"message": "Email address already taken."
})
login(request, user)
return HttpResponse("Successfully created account.")
else:
return render(request, "my_api/register.html")
【问题讨论】:
-
您是否将令牌添加到您的 html 表单中?
{% csrf_token %}docs.djangoproject.com/en/3.1/ref/csrf -
好的,这似乎已经解决了...暂时关闭这个,谢谢。
标签: django django-rest-framework django-rest-framework-simplejwt