我想在我的APIView
中获得访问令牌。我在Oauth2
中使用client_credentials
。甚至将self.request.auth
和self.request.user
打印为None
。我希望在djnago restframework中创建了client_credentials
应用程序的用户。
# Employee API
class EmployeeListAPIView(generics.ListAPIView):
serializer_class = UserSerializer
# permission_classes = [UserIsAuthenticated]
def get_queryset(self, *args, **kwargs):
print('request.user', self.request.auth)
print('request.user', self.request.user)
print('Access Token', self.access_token)
qs = User.objects.exclude(
Q(userprofile__user_is_deleted = True)|
Q(userprofile__user_company__company_is_deleted=True)
).filter(
Q(userprofile__user_company =self.request.auth.application.company) &
Q(userprofile__user_role__id=4)
)
return qs
答案 0 :(得分:2)
如果要访问令牌,可以通过request.META.get('HTTP_AUTHORIZATION')
获得。
如果您想要用户或客户,则可以
from django-oauth2-provider.provider.oauth2.models import AccessToken
accesstoken=AccessToken.objects.get(token=request.META.get('HTTP_AUTHORIZATION'))
user=accesstoken.user
client=accesstoken.client
答案 1 :(得分:2)
还不能发表评论,所以我需要回答:) 您确定中间件设置正确吗?
这里是一个例子,也许会有所帮助。 How can I get the current logged in user from a django-oauth-toolkit token?
实际上很奇怪,您无法通过self.request.user获取用户。应该让他回来的。
尝试打印您正在查看的请求对象并查看其中的内容,也许会有所帮助。