【发布时间】:2013-04-22 00:07:05
【问题描述】:
对于我目前正在进行的项目,我决定编写一个自定义身份验证模型。我正在使用其余框架和所有访问权限。本地身份验证尚未实现(已实现,但版本不同,因此没有问题)。
用户模型正确注册并且 OAuth 身份验证有效。用户登录正常。
使用视图时,如果我使用 django 的视图作为基类,则身份验证可以正常工作。如果我使用 rest-framework 的 APIView 就没有那么多了。
在我的 ProfileView 中(LOGIN_REDIRECT_URL 在此处重定向)我收到了一个 rest_framework.request.Request 实例,这对我来说是可以的。问题是:
request.user 是 AnonymousUser 的一个实例(即使在登录后)
我猜问题出在我的实现上,但是:
request._request.user 是经过身份验证的用户
(注意request._request是原始的django请求)
我倾向于认为这是一个 rest-framework 错误,但也许你们中的某个人知道解决方法?
编辑 请注意,登录是在非 APIView 类中进行的,而是在从 View 继承的类中进行的。这可能是 User 实例未传递给 APIView 实例的原因。
【问题讨论】:
-
提供一些代码,你做了什么?
-
好吧,在这种情况下,我认为没有必要这样做,因为它确实有效!在我的 get_or_create_user() 方法中,我有这个: return User.objects.create_user(**kwargs) 它确实返回了一个 User 实例(kwargs 是一个包含所有字段的标准字典)。问题不在于身份验证,问题在于其余框架似乎正在创建自己的 AnonymousUser 实例,而不是使用 django 本机提供的实例。
标签: python django django-rest-framework