【发布时间】:2020-09-19 17:49:16
【问题描述】:
我有后端 = Django+Django Rest+Djoser(基于令牌的用户身份验证应用程序) Fontend = React JS + Axios。
在本地主机/开发中,我可以使用令牌进行用户登录和身份验证。 Postman 也没有报错。
在生产模式下,由于 CSRF 失败而报错。
为什么会这样?
我认为 CSRF 令牌只需要在会话身份验证中。
我尝试删除会话身份验证,但导致服务器崩溃
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
....
}
中间件
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
已安装的应用程序
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'shop',
'corsheaders',
'frontend',
'djoser',
'rest_framework.authtoken',
'users'
]
【问题讨论】:
-
你是在应用还是网页上使用这个api?
-
web 应用程序的 api(它不会刷新),我不需要会话身份验证。如何全局禁用 csrf 令牌?
标签: django django-rest-framework