DJANGO REST API – Как ограничить доступ пользователей к API?Python

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 DJANGO REST API – Как ограничить доступ пользователей к API?

Сообщение Гость »


Итак, я собрал REST API, используя REST API Уильяма Винсента с книгой Django. У меня все идет согласно книге, но я немного нуб, поэтому мне нужны разъяснения от профессионалов.

Как я могу ограничить пользователю с помощью токена доступ к определенной информации в моем API?

Пользователь создан с токеном:
Изображение


Я добавил authentication_classes = [TokenAuthentication] в class UserList, думая, что если пользователь вошел в систему с токеном, вошедший в систему пользователь сможет получить доступ к этой информации моего API, но я получаю следующее:


Изображение


Когда я удаляю authentication_classes = [TokenAuthentication], я получаю следующее.


Изображение


Все пользователи могут видеть мой API, а я этого не хочу. Я хочу, чтобы мой API просматривали только пользователи с токеном.

Любая помощь приветствуется!

Спасибо! Код ниже

# api/views.py

из django.contrib.auth import get_user_model из дженериков импорта rest_framework, разрешения из rest_framework.authentication импортировать TokenAuthentication из .serializers импортировать UserSerializer # Просмотр списка отображения - Пользователь класс UserList(generics.ListAPIView): набор запросов = get_user_model().objects.all() сериализатор_класс = Пользовательскийсериализатор Permission_classes = (permissions.IsAuthenticated,) Authentication_classes = [TokenAuthentication] # api/serializers.py

из django.contrib.auth import get_user_model из сериализаторов импорта rest_framework класс UserSerializer(serializers.ModelSerializer): класс Мета: модель = get_user_model() поля =('id', 'имя пользователя', 'электронная почта',) #api/urls.py

из пути импорта django.urls из импорта .views (UserList) URL-паттерны = [ путь('users/', UserList.as_view()), ] #master_application/urls.py

urlpatterns = [ путь('admin/', admin.site.urls), путь('', include('users.urls')), путь('api/', include('api.urls')), путь('api-auth/', include('rest_framework.urls')), путь('api/rest-auth/', include('rest_auth.urls')), путь('api/rest-auth/registration/', include('rest_auth.registration.urls')), путь('', include('django.contrib.auth.urls')), путь('users/', include('users.urls')), путь('users/', include('django.contrib.auth.urls')), ] settings.py
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAdminUser', 'rest_framework.permissions.IsAuthenticated', ], 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.TokenAuthentication', ] }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»