我正在使用 Flask Login 和 Principal 进行身份和角色管理。我的需求是直接从文档中描述的。我的代码在这里:
@identity_loaded.connect_via(app)
def on_identity_loaded(sender, identity):
# Set the identity user object
identity.user = current_user
# Add the UserNeed to the identity
if hasattr(current_user, 'get_id'):
print 'current_user ' + str(current_user.get_id())
identity.provides.add(UserNeed(current_user.get_id))
# Assuming the User model has a list of roles, update the
# identity with the roles that the user provides
if hasattr(current_user, 'roles'):
if current_user.roles:
for role in current_user.roles:
identity.provides.add(RoleNeed(role.name))
在我的登录代码中,我这样做:
identity_changed.send(current_app._get_current_object(),
identity=Identity(user.user_id)
登录时,信号按预期触发。在随后的每次页面加载中,current_user 是匿名的并且没有用户 ID,但所有 @login_required 函数的行为就像用户已登录一样。Flask login 知道用户已登录,但由于某种原因 current_user 不一致。
我是否在某处遗漏了配置的基本点?