【发布时间】:2019-04-03 13:33:38
【问题描述】:
我的settings.py:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.RemoteUserBackend',
'django.contrib.auth.backends.ModelBackend',
]
MIDDLEWARE = [
# ...
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.RemoteUserMiddleware',
# ...
]
ModelBackend 由 DRF 可浏览 API 使用。
RemoteUserBackend 被前端应用使用。
如果用户登录 Browsable API,前端将同时发送身份验证令牌和会话令牌。两个凭据都是不同的 django 用户。
AUTHENTICATION_BACKENDS 应该按顺序工作,但 AuthenticationMiddleware 在 MIDDLEWARE 中排在第一位,这是强制性的。
经过会话身份验证的用户在前端应用程序中获取了错误的数据。 Django 忽略远程用户凭据。用户必须从可浏览的 API 中注销。
我该如何解决这个问题?
【问题讨论】:
标签: django django-rest-framework