在Django REST框架中以身份验证类

时间:2020-07-27 15:55:29

标签: django django-rest-framework django-request

假设我在DRF中具有以下Authentication类。如果请求已通过身份验证,则我需要request对象中的一些其他数据。假设REQUIRED_DATA是该变量。

class MyAuthClass(BaseAuthentication):
    
    def authenticate(self, request):
        # suppose is_authenticated_request and authenticated_user are methods
        # which return the responses as described by their name
        if is_authenticated_request(request):
            user = authenticated_user(request)
            request.REQUIRED_DATA = some_variable_of_any_type
            return (user, None)
        raise exception.AuthenticationFailed(_('Authentication failed.'))

这是我在视图集中使用它的方式。

class MyViewSet(viewsets.GenericViewSet):
    authentication_classes = [MyAuthClass]
    permission_classes = [permissions.IsAuthenticated]

    def create(self, request, *args, **kwargs):
        #############
        # ......... #
        request.REQUIRED_DATA # using variable
        # ......... #
        #############

我要走了吗?

请求通过身份验证后,我需要此变量。他们是这样做的更好方法吗?中间件是一个,但是中间件针对每个请求运行,我只需要此视图集。

0 个答案:

没有答案