Не удается получить доступ к панели администратора после настройки django-oauth-toolkit

У меня был пет-апи (тестовый апи) без аутентификации. Я пытаюсь узнать, как реализовать oath2, чтобы повысить безопасность моего приложения.

I'd like to access the models of my app through a request call using the API but also through the Django Admin Panel.

Я следую этому руководству: https://medium.com/@halfspring/guide-to-an-oauth2-api-with-django-6ba66a31d6d

для настройки: django-oauth-toolkit

Учебник говорит, что я должен добавить этот код в настройки:

 AUTHENTICATION_BACKENDS = (
     'django.contrib.auth.backends.ModelBackend' # To keep the Browsable API
     'oauth2_provider.backends.OAuth2Backend',
 )

Но когда я запускаю сервер и пытаюсь получить доступ к /admin, я получаю:

ModuleNotFoundError at /admin/login/
No module named 'django.contrib.auth.backends.ModelBackendoauth2_provider'; 'django.contrib.auth.backends' is not a package

Если я прокомментирую:

# 'django.contrib.auth.backends.ModelBackendoauth2_provider'; 

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

Комментируя обе строки, я без проблем могу получить доступ к панели администратора:

#AUTHENTICATION_BACKENDS = (
    # 'django.contrib.auth.backends.ModelBackend' # To keep the Browsable API
    # 'oauth2_provider.backends.OAuth2Backend',
#) 
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
723
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Все в порядке, мой работает хорошо и без него. Я тоже следую этому руководству. Просто продолжайте http://127.0.0.1:8000/о/приложения.

Кстати, я также комментирую ALLOWED_HOSTS = ['0.0.0.0'] и в файле users/views.py я изменил все http://0.0.0.0:8000 на http://127.0.0.1:8000.

И теперь я получаю это:

{
    "access_token": "C2qukd1zWz9aGSp652qbnpYjoT6ZRx",
    "expires_in": 36000,
    "token_type": "Bearer",
    "scope": "read write",
    "refresh_token": "UoI0r9J09F3kcXGO1q3KsYoGHQ9DBw"
}
Ответ принят как подходящий

В коде ошибка,

AUTHENTICATION_BACKENDS = (
 'django.contrib.auth.backends.ModelBackend' # To keep the Browsable API
 'oauth2_provider.backends.OAuth2Backend',
)

После (,) отсутствует запятая 'django.contrib.auth.backends.ModelBackend', поэтому обе строки воспринимаются как одна строка, как вы можете видеть в ошибке.

Так что вам нужно было сделать просто

AUTHENTICATION_BACKENDS = (
 'django.contrib.auth.backends.ModelBackend', # To keep the Browsable API
 'oauth2_provider.backends.OAuth2Backend',
)

Теперь будет работать...

Другие вопросы по теме