9

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 に一貫性がありません。

どこかに構成の重要なポイントがありませんか?

4

2 に答える 2