繁体   English   中英

如何获得在DRF视图中进行身份验证时成功的身份验证类(或类名)?

[英]How can I get the Authentication class (or class name) which is succeeded during authentication in DRF View?

假设我认为

from rest_framework import viewsets


class SampleViewset(viewsets.ModelViewSet):
    serializer_class = SampleSerializer
    queryset = Sample.objects.all()
    authentication_classes = (FirstAuthClass, SecondAuthClass, ThirdAuthClass)

    def get_success_auth_class(self, request, *args, **kwargs):
        # What logic should I use here ????
        return success_auth_class


然后,应该在get_success_auth_class()方法中使用什么逻辑?

换句话说, 如何获得在DRF视图中进行身份验证时成功的身份验证类(或类名)?

该DRF Request类有一个属性叫做successful_authenticator这将返回被用于验证请求,或认证实例类的实例None

class SampleViewset(viewsets.ModelViewSet):
    serializer_class = SampleSerializer
    queryset = Sample.objects.all()
    authentication_classes = (FirstAuthClass, SecondAuthClass, ThirdAuthClass)

    def get_success_auth_class(self, request, *args, **kwargs):
        for auth_class in self.authentication_classes:
            if isinstance(request.successful_authenticator, auth_class):
                return auth_class
        return None


在这里引用源代码

 @property def successful_authenticator(self): """ Return the instance of the authentication instance class that was used to authenticate the request, or `None`. """ if not hasattr(self, '_authenticator'): with wrap_attributeerrors(): self._authenticate() return self._authenticator 


参考

Github源代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM