Замена приложения аутентификации Django и промежуточного программного обеспечения пользовательским приложением аутентификации и промежуточным программным обеспечением аутентификации

#django #session #authentication #django-middleware

#django #сессия #аутентификация #django-промежуточное программное обеспечение

Вопрос:

После изучения способов расширения пользовательской таблицы приложения аутентификации в django я решил написать свое собственное приложение аутентификации. Это то, что мне нужно сделать для замены contrib.auth приложения:

  1. Создайте AuthenticationMiddleware класс и добавьте MyAuth.models.User объект в каждый запрос вместо django.auth.models.User и укажите на него в файле настроек.
  2. Создайте пользовательское AuthenticationBackend .
  3. Создайте AuthenticationContextProcessor s и аналогичным образом укажите на них в файле настроек.

Вопросы:

  1. Нужно ли мне вносить какие-либо изменения в любое другое приложение или класс промежуточного программного обеспечения сеанса?
  2. Основная причина написания моего собственного приложения аутентификации заключается в том, что в таблице пользователей недостаточно полей, и мне не нравится идея user_profile . Я заметил, что мы добавляем объект user к каждому запросу, чтобы я мог использовать его в сеансах. Но если я добавлю больше полей в таблицу user, то объект user станет больше, и если он будет добавлен к каждому запросу, это только увеличит нагрузку. Я прав? Будет ли увеличение размера пользовательского объекта создавать какие-либо проблемы с загрузкой? Или эффект будет незначительным?

Комментарии:

1. Что именно вам не нравится в user_profile? Это не идеально, но, по крайней мере, для меня, оно работает достаточно хорошо (по сравнению с необходимостью переписывать целое приложение аутентификации ).

2. Сохранение пользовательских данных в двух таблицах и дополнительных объединениях. Я должен поместить поле manytomany в другую таблицу вместо таблицы user, что кажется неправильным. Но все это мое мнение, поэтому нет смысла его обсуждать. Мой вопрос в том, есть ли какие-либо подводные камни в моей схеме, упомянутой выше, помимо необходимости снова писать приложение?

3. не забудьте включить CSRF в ваше пользовательское промежуточное программное обеспечение 😉