ID とロールの管理に 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 ログインは、ユーザーがログインしていることを認識していますが、何らかの理由で current_user に一貫性がありません。
どこかに構成の重要なポイントがありませんか?