Настройка бэкэнда аутентификации Django с использованием представления базы данных - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь настроить бэкэнд аутентификации по умолчанию для моего проекта django ( версия 2.2.7 ), поэтому я использую бэкэнд пользовательской аутентификации .

Я создал представление базы данных под названием v_auth_user, которое является моей моделью. В бэкэнде аутентификации я выбираю из этого представления, используя необработанный запрос (мне нужно использовать функцию базы данных password_hash для проверки пароля ha sh, надеюсь, это сработает)

Conserns:

  1. Мне нужно указать User full_long_name и адрес электронной почты, когда пользователь будет аутентифицирован. Как?
  2. Все это будет работать? Что вы думаете?

Модель:

class vAuthUser(models.Model):
    lb_id_no = models.IntegerField(primary_key=True)
    user_login_name = models.CharField(max_length=20)
    password = models.CharField(max_length=30)
    full_long_name = models.CharField(max_length=20)
    lb_email = models.EmailField(max_length=50)

    class Meta:
        managed = False
        db_table = 'v_auth_user'

Пользовательский бэкэнд аутентификации:

from django.contrib.auth.models import User
from erp.models import vAuthUser

class OracleBackend:
    def authenticate(self, request, username=None, password=None):
        try:
            user = vAuthUser.objects.raw(f'select * from v_auth_user where user_login_name={username}
            and password=password_hash({username},{password}) and rownum=1')

            if user:
                return user
        except User.DoesNotExist:
            return None

    def get_user(self, lb_id_no):
        try:
            return vAuthUser.objects.get(pk=lb_id_no)
        except User.DoesNotExist:
            return None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...