我试图了解它是如何Flask-Login工作的.
我在他们的文档中看到他们使用预先填充的用户列表.我想玩数据库存储用户列表.
但是,我不明白这个Flask-Login模块中的一些内容.
@login_manager.user_loader
def load_user(userid):
#print 'this is executed',userid
return user(userid, 'asdf')
Run Code Online (Sandbox Code Playgroud)
每次请求都会调用此代码?这用于加载我的用户对象的所有细节?
现在,我有这个代码:
@app.route('/make-login')
def make_login():
username = 'asdf'
password = 'asdf'
user_data = authenticate(username, password)
user_obj = user(user_data[0], user_data[1])
login_user(user_obj)
return render_template('make-login.html')
Run Code Online (Sandbox Code Playgroud)
当我访问/登录时,我想登录.
我的用户类:
class user(object):
def __init__(self, id, username, active=True):
self.username = username
self.id = id
#self.active = active
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return 5
Run Code Online (Sandbox Code Playgroud)
另外,我为验证/注册写了另外两个函数
def authenticate(username, password):
cursor = db.cursor() …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我使用了flask-security来添加身份验证和授权主题。SQLAlchemy 也用作数据提供者(使用 MySQL 作为后端)。该应用程序运行良好。
然后,我做了一些 MySQL 跟踪,日志显示在应用程序请求的每个 URL 处,flask-security 库发送两个数据库查询:
select ... from user where user.id = 'the user identifier' select ... from role, roles_users ...我认为这是一个性能问题,我喜欢尽量减少这些查询。我不知道是否有我缺少的配置功能。