2

Для моей потребности встроенной модели пользователя недостаточно ... Итак, у меня есть собственная модель UserProfile, и я хочу сделать аутентификацию на сайте с помощью этой модели (UserProfile не наследуется от модели пользователя и не связан с это вообще).Проверка подлинности Django с пользовательской моделью Пользователь

My Model:

class UserProfile(models.Model): 
    password = models.CharField(max_length = 40) 
    email = models.EmailField(max_length = 72, unique = True) 

    ## Add this so that you can use request.user.is_authenticated 
    def is_authenticated(self): 
     return True 

Но встроенная проверка подлинности использует модель пользователя.

Итак, я хочу понять, как это изменить, чтобы аутентификация использовала мою модель UserProfile со всеми функциями auth??

Хороший учебник будет замечательным!

(шаг за шагом взгляды, модели и аутентификацией)

PS: Я знаю, что я могу хранить дополнительные данные в другой модели, но я не хочу, чтобы

ответ

3

Вот еще более экстремальный пример, но показывает, что то, что вы хотите сделать, может быть сделано. Автор не только заменяет модель пользователя, используемую бэкэндом аутентификации, но также использует SQLAlchemy вместо Django ORM. http://tomforb.es/using-a-custom-sqlalchemy-users-model-with-django

Главное, что вам нужно написать свой backend authenticate и get_user методы получения пользовательской модели пользователя. Если вы хотите также поддерживать разрешения, вам нужно будет написать has_perm.

+0

Это помогло мне выделить. Я работал в правильном направлении. Единственное, что я забыл, это добавить 'def is_authenticated (self): return True' в моей модели UserProfile. См. Выше – nelsonvarela

0

Я использовал this статьи, и она работала хорошо достаточно для меня, надеюсь, что это может быть полезно для вас.

Султан

+0

Я только что редактировал вопрос. Я НЕ расширяю пользователя. У меня есть собственный пользователь. – nelsonvarela

Смежные вопросы