2

symfony ウェブサイトのアクセス制御部分を設定するのに助けが必要です。誰でもアクセスできるようにしたい:

/ : the homepage
/login : the login page
/login_check : the check login page for FOSUserBundle
/register : the register page of FOSUserBundle
/resetting/request : the resetting password page of FOSUserBundle

そして、残りのすべてについてユーザーを認証したいと思います。たとえば、/abc、/xxx、/yy/xx ...などです。

これをsecurity.ymlに入れましたが、うまくいきません。ユーザーはすべての場合にすべてにフルアクセスできます:

access_control:    
        - { path: /_wdt/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /_profiler/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /login, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /login_check, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /resetting/request, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /*, role: IS_AUTHENTICATED_FULLY }

どうしたの ?

ありがとう ;)

4

2 に答える 2

3

ACL の奇妙な使い方。acl 正規表現ははるかに簡単です。^URL の先頭を示します。$一致する URL の終わりを示します。no$が存在する場合は、すべて「正規表現」が一致した後。アスタリスクはまったくありません。ああ、login_check を保護する必要があります

access_control:
    - { path: ^/$, role: IS_AUTHENTICATED_ANONYMOUSLY }  
    - { path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/_profiler, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: IS_AUTHENTICATED_FULLY }
于 2013-05-03T18:26:15.917 に答える
2

問題は、最後の行にピリオドがないことです。

      - { path: /*, role: IS_AUTHENTICATED_FULLY }
              ^^^^^

/*0 個以上のスラッシュ (/) を意味します ..スラッシュが後に続くもの/.*を示す必要があります

正しいエントリは次のようになります。

      - { path: /.*, role: IS_AUTHENTICATED_FULLY }
于 2013-05-03T11:34:17.173 に答える