Как использовать Flask_Login без пользовательской модели? - PullRequest
0 голосов
/ 04 мая 2020

Я создал весь свой проект, используя psycopg2 lib и контроллер, который извлекает все выбранные из базы данных, которые мне нужны, например:

UserControllers.py

def getUser(user_id):
    try:
        conn = ConnectionDatabase()
        cur = conn.cursor()
        conn.set_client_encoding('LATIN1')
        result = cur.execute("SELECT * FROM users WHERE id=%s",(user_id,))
        result = cur.fetchone()
        columns = [desc[0] for desc in cur.description]
        return {columns[i]: result [i] for i in range(len(columns))}
    except Exception as e:
        return "User not found"

Теперь пришло время создать система входа в систему, я выбираю использовать flask_login, но изучая документацию, я обнаружил следующее:

Расширение Flask -Login работает с пользовательской моделью приложения и ожидает реализации определенных свойств и методов. в нем.

такие из них: is_authenticated, is_active, is_anonymous, get_id.

Я пытаюсь работать без модели, поэтому создаю load_user(), предоставленный документацией, таким образом:

@login_manager.user_loader
def load_user(user_id):
    return User.get(user_id) 

Я изменил свой на:

@login_manager.user_loader
def load_user(userid):
    return getUser(user_id)

Заметьте, что вместо этого возвращайте объект User, поскольку документация подсказывает You will need to provide a user_loader callback. This callback is used to reload the user object from the user ID stored in the session, я возвращаю dict, и когда я запускаю это:

´AttributeError: у объекта 'int' нет атрибута 'is_active'`

Кто-нибудь может подсказать, как мне поступить без модели User?

...