Django rest-framework does not store authenticated user between calls
对于我目前正在从事的项目,我决定编写一个自定义身份验证模型。我正在使用其余框架和全部访问权限。本地身份验证尚未实现(它是,但是版本不同,因此没有问题)。
用户模型正确注册,OAuth身份验证有效。用户可以正常登录。
使用视图时,如果我使用django的View作为基类,则身份验证可以正常工作。如果我使用rest-framework的APIView,则不会太多。
在我的ProfileView中(这里是LOGIN_REDIRECT_URL重定向),我收到一个rest_framework.request.Request实例,我认为可以。问题是:
request.user是AnonymousUser的实例(即使登录后也是如此)
我想问题可能出在我的实现上,但是然后:
request._request.user是经过身份验证的用户
(请注意request._request是原始的Django请求)
我倾向于认为这是一个其余的框架错误,但也许你们当中的一个知道解决方法?
编辑
仅需注意,登录是在非APIView类中进行的,而是在从View继承的类中进行的。这可能是User实例未传递到APIView实例的原因。
您需要在
1 2 3 4 5 6 | REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthentication', ) } |
设置好该值并且用户登录后,请确保请求标头中的
如果您使用的是非浏览器客户端(例如,移动应用程序),则需要在标头中手动设置会话ID。
此外,由于您提到使用
1 | "Authorization: Bearer <your-access-token>" |
请参阅Django Rest Framework中的身份验证