Я работаю над проектом по замене приложения Drupal 6 и пытаюсь выяснить, как использовать его MySQL таблицу 'users' для создания моих Django пользовательских моделей для аутентификации. Оба приложения размещены на одном сервере, поэтому у меня есть легкий доступ к БД. База данных пользователей Drupal по-прежнему активно используется для более масштабного приложения, из которого мой проект является подмножеством, поэтому я не могу реструктурировать его, и я надеюсь избежать необходимости в отдельных учетных записях для моего приложения, поскольку оно все является частью та же экосистема / имеет существующих пользователей. Я не могу просто скопировать существующих пользователей в новую таблицу, так как люди будут продолжать создавать учетные записи в системе Drupal.
Я исследовал AbstractUser
и AbstractBaseUser
, но не нашел способа назначьте столбцы из существующей таблицы переменным имени пользователя и пароля. Кажется, что все пользовательские решения для пользовательских моделей предполагают, что пользовательская база данных запускается fre sh и заботится о назначении, хранении и сохранении имен пользователей и паролей за кулисами.
Я рассматриваю возможность использования стандартная модель пользователя, проверка нераспознанных имен пользователей и паролей в базе данных пользователей Drupal и создание нового пользователя Django при первом входе в систему, если он существует в таблице 'users'. Это моя лучшая ставка? Это кажется громоздким, но не нашел лучшего решения.
Что я хотел бы сделать (или что-то в этом роде):
class User(AbstractBaseUser):
uid = models.AutoField(primary_key=True)
username = models.CharField(unique=True, max_length=60)
password = models.CharField( max_length=32)
mail = models.CharField(max_length=64, blank=True, null=True)
USERNAME_FIELD = ‘username’
class Meta:
managed = False
db_table = ‘users’
Другая информация:
Полагаю, мне понадобится написать пользовательский бэкэнд аутентификации для декодирования хешированного пароля Drupal, который хранится в БД, но я думаю, что это будет довольно легко, как только я проясню модель.
Я довольно новичок в Django, так что прости мое невежество. Спасибо!