1

ユーザーは複数のロールを持つことができますROLE_USER, ROLE_SUBSCRIBTION_FOO, ROLE_SUBSCRIBTION_BAR

彼らの役割に基づいて、アクセス制御リストを定義します。

    - { path: ^/admin/helpdesk/foo, roles: ROLE_SUBSCRIPTION_FOO }
    - { path: ^/admin/helpdesk/index, roles: ROLE_ADMIN } 

役割階層

role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUBSCRIBTION_FOO: ROLE_ADMIN
        ROLE_SUPER_ADMIN: ROLE_ADMIN

問題は、ユーザーがロールROLE_SUBSCRIBTION_FOOを 持っていて、/admin/helpdesk/fooアクセスが拒否された場合です。ユーザーは ROLE_ADMIN と ROLE_SUBSCRIBTION_FOO の両方を持っています。しかし、私が持っているとき

- { path: ^/admin/helpdesk/foo, roles: ROLE_ADMIN }

それは動作しますが、私はそれが必要です

- { path: ^/admin/helpdesk/foo, roles: ROLE_SUBSCRIPTION_FOO }

これは機能しませんが、ユーザーには役割がありますか? これはちょっと変です。問題がどこにあるのでしょうか?

4

2 に答える 2

2

私にはタイプミスのように見えます。階層で (B を使用して)定義しましたが、 (P を使用して)ROLE_SUBSCRIBTION_FOOパスを制限したいと考えています。ROLE_SUBSCRIPTION_FOO

于 2013-02-26T09:12:55.403 に答える
0

セットアップを見ると、すべてが正しいように見えます。

アプリケーションの管理領域からユーザーの役割を動的に変更したいと考えています。たとえば、ユーザー BOB に FOO ロールを付与し、変更がすぐに有効になることを期待します。

しかし、これはうまくいきません。ユーザー BOB の現在開いているセッションは更新されません。彼は自分自身を再認証する必要があります。再認証 (ログアウトして再度ログイン) の後、symfonys セキュリティシステムはロールを指定されたアクセスリストと正しく比較します。

したがって、ユーザーセッションが自動的に更新されることを期待していましたが、これは symfony のデフォルトのセキュリティシステムでは不可能です。データベースベースのセッション管理で拡張する必要があると思います。このようにして、ユーザー セッションを更新できます。

于 2013-02-25T21:19:25.090 に答える