Flask- login实际上没有用户后端,它只是处理会话机制来帮助您登录和注销用户。您必须(通过装饰方法)告诉它,代表用户的是什么,并且还需要您弄清楚如何知道用户是否“活跃”(因为“活跃”在不同的应用程序中可能意味着不同的事情) )。
您应该阅读文档,并确定它可以 做 什么和不可以做什么 。在这里,我只专注于与db后端进行连接。
首先,定义一个用户对象。代表用户的属性。然后,该对象可以查询数据库,LDAP或任何对象,它是将登录机制与数据库后端连接的钩子。
为此,我将使用登录示例脚本。
class User(UserMixin):
def __init__(self, name, id, active=True):
self.name = name
self.id = id
self.active = active
def is_active(self):
# Here you should write whatever the code is
# that checks the database if your user is active
return self.active
def is_anonymous(self):
return False
def is_authenticated(self):
return True
创建用户对象后,需要编写一种加载用户的方法(基本上是User
从上面创建该类的实例)。使用用户ID调用此方法。
@login_manager.user_loader
def load_user(id):
# 1. Fetch against the database a user by `id`
# 2. Create a new object of `User` class and return it.
u = DBUsers.query.get(id)
return User(u.name,u.id,u.active)
检查用户名和密码是否匹配(针对您的数据库)-您需要自己编写此代码。
如果身份验证成功,则应将用户实例传递给 login_user()