为什么我无法通过 flask_login 正确授权网站上的用户

Why I can't properly authorize the user on the site via flask_login

下午好。

面临初始化当前用户的问题Flask_login。我在网站上进行授权。仅在登录时打开的页面打开。事实上,我进去了。 登录时,我创建了 UserLogin class 的新元素。

主要class: userlogin = UserLogin().create(user)

用户登录 class:

def create(self, user):
        self.__user = user
        return self 

元素已创建,我可以从 class 获取数据(ID 等)。但是,当我尝试在 UserLogin 中获取 class ID 时,出现错误。

def get_id(self):
        return str(self.__user[0])

例如:

mainCursor.execute(f"SELECT Users.UserID FROM Users WHERE Users.IsAdmin = '1' AND Users.UserID = '{self.get_id()}'")

错误,无法从 get_id() 获取 ID。

出色地。

当我尝试在登录时访问某个站点时,我无法获取当前用户的 ID,因为程序无法识别当前用户。但奇怪的是,它显示我已登录并打开那些只有授权用户才能访问的页面。

主要 class:

@login_manager.user_loader
def load_user(UserID):
    print("load_user")
    return UserLogin().fromDb(UserID, conn)

用户登录 class:

   def fromDb(self, user_id, database):
        self.__user = fDataBase.getUser(database, user_id)
        return self

FDataBase.getUser:

def getUser(connection, user_id):
        try:
            connection.cursor.execute(f"SELECT * FROM Users WHERE UserID = {user_id}")
            res = connection.cursor.fetchone()
            if not res:
                print("Пользователь не найден")
                return False
            return res
        except:
            print("Ошибка получения данных из БД")
        return False

程序不想看到 user_id 并将其传递给 class,这就是我无法对当前用户执行操作的原因。我想我在会议的某个地方错了,但我不能确定。

不使用新函数,而是使用 current_user.id 来获取 ID。

这已在评论部分得到解答,但如果有人遇到同样的问题,这里有一个适用于 login_manager

的答案