django-oauth2-провайдер с пользовательской моделью?

Я действительно застрял в своем проекте прямо сейчас. Я пытаюсь реализовать Oauth2 для моего приложения. Я много узнал о django-oauth2-провайдере и попробовал. Единственная проблема заключается в том, что он использует модель User на django.contrib.auth. Основные пользователи нашего сайта сохраняются в пользовательской модели под названием Пользователь, которая не наследует и не расширяет модель по адресу django.contrib.auth.

Можно ли использовать мою пользовательскую модель для создания клиентов и токенов?

Если django-oauth2-provider не может быть использован для этой цели, кто-нибудь может порекомендовать мне какую-нибудь библиотеку oauth2 с возможностью реализации oauth2 с моей собственной моделью.

С уважением,

Сушант Карки

3 ответа

Как и предполагал предыдущий ответ, вы должны продлить AbstractUser от django.contrib.auth.models,

Проблема с токеном доступа, на который ссылается OP, возникает при изменении настройки AUTH_USER_MODEL ПОСЛЕ django-oauth2-provider был перенесен.

когда django-oauth2-provider после переноса создает ключевое ограничение между моделью User и провайдером django-oauth2.

Решение очень простое:

  1. Создайте новую модель пользователя и измените AUTH_USER_MODEL установка.
  2. Перейти к django_migration таблица в вашей базе данных.
  3. Удалить все строки django-oauth2-provider,
  4. бежать python manage.py makemigrations
  5. бежать python manage.py migrate

Теперь django-oauth2-provider таблицы подключены к модели RIGHT User.

https://github.com/caffeinehit/django-oauth2-provider выбирает модель пользователя, используяsettings.AUTH_USER_MODEL с отступлением к auth.User, Если вы продлитеAbstractUserВаша модель пользователя будет включать в себя все поляauth.Userплюс любые дополнительные поля, которые вы укажете.

from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    some_additional_field = models.BooleanField(default=False)

Укажите пользовательскую модель, которая будет использоваться следующим образомsettings.py:

AUTH_USER_MODEL = 'user_api.User'

Если вы не хотите основывать своего пользователя наAbstractUserвам также нужно написать свой собственный менеджер пользователя, например, путем расширенияBaseUserManager

Вы можете прочитать больше о способах настройки пользовательской модели django здесь.

братан, я столкнулся с той же проблемой, я точно знаю, как создать собственную модель пользователя с помощью Oauth2.

теперь я использую SimpleJWT для аутентификации

вы можете проверить эту документацию, это поможет решить вашу проблему, нажмите здесь

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