Токен аутентификации - django остальные рамки - PullRequest
0 голосов
/ 02 апреля 2020

Я не знаю, как вернуть токен, если пользователь присутствует в моей базе данных. У меня есть Модель пользователя с полями логина и пароля, и я создал несколько пользователей с сайта администратора dajn go. В URL я зарегистрировал slug:

 path('api-token/', AuthToken, name = 'api-token')

Класс токенов Auth выглядит так (это пример из документации по остальным фреймворкам).

class AuthToken(ObtainAuthToken):

def post(self, request, *args, **kwargs):
    serializer = self.serializer_class(data=request.data,
                                       context={'request': request})
    serializer.is_valid(raise_exception=True)
    user = serializer.validated_data['user']
    token, created = Token.objects.get_or_create(user=user)
    return Response({
        'token': token.key,
    })

Я хочу проверить, существует ли пользователь в mu sql -lite база данных и, если так, вернуть токен. К сожалению, я не понимаю этот код. Может кто-нибудь объяснить мне, что он делает и как я могу изменить его в соответствии с моими требованиями.

Другая проблема заключается в том, что у меня есть представление пользователя, которое возвращает пользователей из моей базы данных

class UserView(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

Это Зарегистрировано таким образом

router = routers.DefaultRouter()
router.register('users', views.UserView)

urlpatterns = [
    path('',include(router.urls)),
]

Это сработает? Я не уверен, потому что нет проверки, если кто-то передал токен и если токен правильный

1 Ответ

0 голосов
/ 02 апреля 2020

Если вы не используете пользовательскую аутентификацию токена, вам следует использовать встроенную аутентификацию.

https://www.django-rest-framework.org/api-guide/authentication/#by -exposing-an-api-endpoint

Просто используйте представление, предоставленное DRF

from rest_framework.authtoken import views
urlpatterns += [
    url(r'^api-token-auth/', views.obtain_auth_token)
]

Относительно авторизации в вашем UserView, см .: https://www.django-rest-framework.org/api-guide/authentication/#setting -the-аутентификация-схема

, которую вы можете просто добавить

permission_classes = [IsAuthenticated]

Позволяет только аутентифицированным пользователям использовать эту конечную точку

...