#django #session #authentication #django-middleware
#django #сессия #аутентификация #django-промежуточное программное обеспечение
Вопрос:
После изучения способов расширения пользовательской таблицы приложения аутентификации в django я решил написать свое собственное приложение аутентификации. Это то, что мне нужно сделать для замены contrib.auth
приложения:
- Создайте
AuthenticationMiddleware
класс и добавьтеMyAuth.models.User
объект в каждый запрос вместоdjango.auth.models.User
и укажите на него в файле настроек. - Создайте пользовательское
AuthenticationBackend
. - Создайте
AuthenticationContextProcessor
s и аналогичным образом укажите на них в файле настроек.
Вопросы:
- Нужно ли мне вносить какие-либо изменения в любое другое приложение или класс промежуточного программного обеспечения сеанса?
- Основная причина написания моего собственного приложения аутентификации заключается в том, что в таблице пользователей недостаточно полей, и мне не нравится идея
user_profile
. Я заметил, что мы добавляем объект user к каждому запросу, чтобы я мог использовать его в сеансах. Но если я добавлю больше полей в таблицу user, то объект user станет больше, и если он будет добавлен к каждому запросу, это только увеличит нагрузку. Я прав? Будет ли увеличение размера пользовательского объекта создавать какие-либо проблемы с загрузкой? Или эффект будет незначительным?
Комментарии:
1. Что именно вам не нравится в user_profile? Это не идеально, но, по крайней мере, для меня, оно работает достаточно хорошо (по сравнению с необходимостью переписывать целое приложение аутентификации ).
2. Сохранение пользовательских данных в двух таблицах и дополнительных объединениях. Я должен поместить поле manytomany в другую таблицу вместо таблицы user, что кажется неправильным. Но все это мое мнение, поэтому нет смысла его обсуждать. Мой вопрос в том, есть ли какие-либо подводные камни в моей схеме, упомянутой выше, помимо необходимости снова писать приложение?
3. не забудьте включить CSRF в ваше пользовательское промежуточное программное обеспечение 😉