假设我在 DRF 中有以下身份验证类。如果请求通过了身份验证,那么我需要在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
# ......... #
#############
我走对了吗?
请求通过身份验证后,我需要此变量。他们是更好的方法吗?中间件是一个,但中间件为每个请求运行,我只需要这个视图集。