@molchanv

Как делать запросы на фронте без ключа?

Дано:
Django rest framework + vue.js

Авторизация через токен
'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.TokenAuthentication',
),


Нужно:
Что бы запросы к API проходили либо только в рамках моего сайта (фронтенд обращается что бы показывать контент), либо извне, но с ключом

Я пробовал создавать свой PERMISSION_CLASS , который проверяет авторизован ли пользователь, либо что запрос идет с локалхоста:
class IsLochalhostOrAuth(BasePermission):

    def has_permission(self, request, view):

        if request.user and request.user.is_authenticated:
            return True

        ip = request.META['REMOTE_ADDR']

        if ip in REST_SAFE_LIST_IPS:
            return True

        return False


Но такой вариант не проходит на серваке, т.к не приходит REMOTE_ADDR
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 1
@szelga
впишите в DEFAULT_AUTHENTICATION_CLASSES
'rest_framework.authentication.TokenAuthentication'
(для токенов),
'rest_framework.authentication.SessionAuthentication'
(для авторизованных пользователей). для локалхоста придётся либо писать свой собственный аутентификатор, либо аутентифицироваться на общих основаниях.

для определения IP можно попробовать https://github.com/un33k/django-ipware
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы