2015-07-06 2 views
0

Мне нужно сделать простую регистрационную функцию, когда Django работает с устаревшей базой данных, где пароль не зашифрован. Поэтому я использую Table.objects.filter(login=username,password=password).exists(), чтобы выяснить, существует ли конкретная комбинация паролей имени пользователя в таблице.Как имитировать request.user с устаревшей базой данных в Django?

После входа в систему я хочу использовать что-то вроде request.user, чтобы использовать это для доступа к другой информации, связанной с пользователем, который только что вошел в систему.

Есть ли способ переносить переменную на разные страницы в системе, например request.user?

ответ

1

Все, что вам нужно, это custom authentication backend. Благодаря этому вы можете использовать существующую таблицу и пользоваться всеми преимуществами стандартной пользовательской модели Django.

Однако я настоятельно призываю вас очень сильно попытаться переместить ваши данные пользователя, чтобы правильно их испортить. Например, в вашем случае вы можете выполнить миграцию данных, чтобы скопировать данные в новую таблицу и хешировать пароли на этом пути.

+0

Я не могу хешировать пароли, поскольку уже существующая система аутентифицируется против этой базы данных. Кроме того, у меня есть одна таблица для клиентов, три таблицы для розничной торговли и одна для администраторов. Смогу ли я создать собственный сервер аутентификации, который работает для всех или мне нужно создать отдельные бэкэнды? – MiniGunnR

+1

Ваш сервер может делать все, что вы хотите; все, что нужно сделать, это принять имя пользователя и пароль и вернуть пользователя. –

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