为什么我无法通过 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
的答案
下午好。
面临初始化当前用户的问题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