Возникла проблема с пользовательской аутентификацией пользователя и oauth2 в django - PullRequest
0 голосов
/ 19 марта 2020

Я делаю приложение с защищенным API, и только авторизованные пользователи должны иметь к нему доступ. Чтобы использовать мощную аутентификацию django, я решил расширить модель User с некоторыми дополнительными и настраиваемыми полями. Я использую пользовательскую модель, расширяя модель AbstractUser. Но, столкнувшись с проблемой ниже, при запросе токена oauth2. Ниже приведен мой код:

class MyUser(AbstractUser):
    """Extended version of Django User Model"""
    is_email_verified = models.BooleanField(
        verbose_name="Email Verified?",
        default=False, choices=T_N_F_CHOICES, auto_created=True,
        help_text="This flag indicates if the email address is authentic and validated"
    )
    mobile = PhoneNumberField(
        verbose_name="Phone Number", blank=True, null=True, unique=True
    )
    is_mobile_verified = models.BooleanField(
        verbose_name="Mobile Verified?",
        default=False, choices=T_N_F_CHOICES, auto_created=True,
        help_text="This flag indicates if the mobile number is authentic and validated"
    )
    profile_pic = models.ImageField(
        verbose_name="Profile Picture",
        upload_to=settings.UPLOAD_DIR,
        height_field=None,
        width_field=None,
        max_length=None,
        blank=True,
        null=True
    )

    USERNAME_FIELD = "email"
    REQUIRED_FIELDS = ['mobile']

    objects = CustomUserManager()

    def __str__(self):
        return self.email

    class Meta:
        managed = True
        db_table = "MyUser"
        verbose_name = "MyUser"
        verbose_name_plural = "MyUsers"

settings.py

...
AUTH_USER_MODEL = 'users.AlphaslateUser'
CORS_ORIGIN_ALLOW_ALL = True
...
INSTALLED_APPS = [
    ...
    'oauth2_provider',
    'corsheaders',
    'countries_plus',
    'rest_framework',
    'users',
]
...
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
    ]
}
...
AUTHENTICATION_BACKENDS = (
    'oauth2_provider.backends.OAuth2Backend',
    'django.contrib.auth.backends.ModelBackend'
)
...
MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    'oauth2_provider.middleware.OAuth2TokenMiddleware',
]

Когда я запрашиваю токен из URL-адреса токена, я сталкиваюсь с ошибкой ниже.

Internal Server Error: /o/token/
Traceback (most recent call last):
...
packages/oauthlib/common.py", line 436, in __getattr__
    raise AttributeError(name)
AttributeError: get_full_path

Если кто-нибудь знает, как решить. Я буду признателен.

1 Ответ

0 голосов
/ 20 марта 2020

Это проблема в коде outhlib версии 1.3.0. См. thread , откуда я это узнал. Я понизил версию до 1.2.0, и проблема была решена.

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