Как вернуть идентификатор пользователя в HTTP-ответе после входа пользователя в систему с помощью DRF-токена аутентификации?
В моем приложении есть конечная точка /login
, где пользователи могут вводить свои данные для входа, и после того, как пользователь прошел аутентификацию, я хотел бы отобразить представление DRF на основе идентификатора пользователя в качестве параметра в URL. Каков наилучший способ сделать это? Нужно ли мне включить идентификатор пользователя в HTTP-ответ, и если да, то как это сделать?
Вот как выглядит представление логина и сериализатор :
view.py
class LogInView(TokenObtainPairView):
serializer_class = LogInSerializer
serializer.py
class LogInSerializer(TokenObtainPairSerializer):
@classmethod
def get_token(cls, user):
token = super().get_token(user)
user_data = ManagerSerializer(user).data
for key, value in user_data.items():
if key != 'id':
token[key] = value
return token
Представление, которое я хочу отобразить после входа пользователя в систему, выглядит следующим образом :
view.py
class AccountDetails(RetrieveAPIView):
serializer_class = AccountSerializer
queryset = Account.objects.all()
urls.py
router = routers.DefaultRouter()
urlpatterns = [
path('', include(router.urls)),
path('account/<pk>', AccountDetails.as_view()),
]
Зачем вам нужен идентификатор пользователя? Вы можете запросить его самостоятельно из request.user. Вам просто нужно переопределить метод get_object в RetrieveApiView:
class AccountDetails(RetrieveAPIView):
serializer_class = AccountSerializer
queryset = Account.objects.all()
def get_object(self):
return request.user