Проверка CSRF не удалась. Запрос прерван.
Вы видите это сообщение, потому что этому сайту требуется файл cookie CSRF при отправке форм. Этот файл cookie необходим из соображений безопасности, чтобы гарантировать, что ваш браузер не будет взломан третьими лицами.
Если вы настроили свой браузер на отключение файлов cookie, включите их, по крайней мере, повторно. для этого сайта или для запросов «того же происхождения».
Причина ошибки: файл cookie CSRF не установлен.
Мой файл Settings.py как показано ниже:
Код: Выделить всё
MIDDLEWARE = [
'autobiz.middleware.WebSocketMiddleware',
'django_tenants.middleware.main.TenantMainMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
"corsheaders.middleware.CorsMiddleware",
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = [
"DELETE",
"GET",
"OPTIONS",
"PATCH",
"POST",
"PUT",
]
CORS_ALLOW_HEADERS = [
"accept",
"accept-encoding",
"authorization",
"content-type",
"dnt",
"origin",
"user-agent",
"x-csrftoken",
"x-requested-with",
REST_FRAMEWORK={
'DEFAULT_FILTER_BACKENDS':['django_filters.rest_framework.DjangoFilterBackend', ],
# 'DEFAULT_AUTHENTICATION_CLASSES':[ 'rest_framework.authentication.BasicAuthentication','rest_framework.authentication.TokenAuthentication','rest_framework.authentication.SessionAuthentication',],
'DEFAULT_AUTHENTICATION_CLASSES':['rest_framework_simplejwt.authentication.JWTAuthentication',],
'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.IsAdminUser', 'rest_framework.permissions.IsAuthenticated',],
}
Код: Выделить всё
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('abpublic.urls'), name='index'),
path('api/token/', csrf_exempt(jwt_views.TokenObtainPairView.as_view()), name='token_obtain_pair'),
path('api/token/refresh/', csrf_exempt(jwt_views.TokenRefreshView.as_view()), name='token_refresh'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Код: Выделить всё
class UsersViewSet(viewsets.ModelViewSet):
queryset = Users.objects.all()
serializer_class = UsersSerializer
permission_classes = (IsAuthenticated,)
filterset_fields = ['empid', 'password', 'type', 'reporting_to', 'role', 'active', 'last_login_date',
'last_created_date',
'last_login_time', 'last_created_time', 'joindate', 'leavedate', ]
Код: Выделить всё
# Request the token
token_response = requests.post(tenant + "api/token/", data=credentials)
# Check if the request was successful
if token_response.status_code == 200:
tokens = token_response.json()
access_token = tokens.get('access') # The access token
print(access_token)
refresh_token = tokens.get('refresh') # The refresh token
else:
print('Failed to obtain token:', token_response.status_code, token_response.text)
access_token = None
# Token has changed, split the token into its components
token_parts = token.split('#')
if len(token_parts) != 6:
print("Invalid token format")
continue
Код: Выделить всё
path('api/token/', csrf_exempt(jwt_views.TokenObtainPairView.as_view()), name='token_obtain_pair'),
Код: Выделить всё
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
Подробнее здесь: https://stackoverflow.com/questions/790 ... quest-abor