2013-02-10 33 views
5

這是怎麼我的security.yml看起來像訪問控制列表:symfony中爲同一個URL需要多個角色2

access_control: 
    - { path: ^/admin, roles: IS_AUTHENTICATED_FULLY } 
    - { path: ^/admin, roles: ROLE_ADMIN } 

我想要做的是,用戶必須有兩個角色(ROLE_ADMIN和IS_AUTHENTICATED_FULLY)以便按照定義訪問路徑。但有了上述規則,如果用戶有任何一個角色,用戶可以按照我不想要的定義訪問路徑。我也試過讓規則與沒有成功如下:

- { path: ^/admin, roles:[ROLE_ADMIN,IS_AUTHENTICATED_FULLY] } 

如何添加,需要用戶有才能訪問定義的路徑這兩個角色的規則?

+0

那麼,您是否找到答案?你檢查的權利似乎是錯誤的。 – Electronick 2017-04-25 16:05:31

回答

1
IS_AUTHENTICATED_FULLY 

當用戶實際通過身份驗證時返回true。

匿名用戶在技術上被認證,這意味着匿名用戶對象的isAuthenticated()方法將返回true。 要檢查您的用戶是否實際進行了身份驗證,請檢查 IS_AUTHENTICATED_FULLY角色。

因此,如果用戶具有角色ROLE_ADMIN並且已登錄,他將被完全驗證。因此沒有必要設置這個要求:

- { path: ^/admin, roles: IS_AUTHENTICATED_FULLY } 

因爲你(見下文),其中包括beeing充分驗證

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

而且

- { path: ^/admin, roles: IS_AUTHENTICATED_FULLY } 

將允許任何用戶查看管理部分。

閱讀:http://symfony.com/doc/current/book/security.html

+0

IS_AUTHENTICATED_REMEMBERED表示用戶使用cookie登錄,IS_AUTHENTICATED_FULLY表示用戶必須通過登錄頁面登錄。所以根據你,當用戶沒有登錄時,用戶仍然可以訪問管理部分? – sonam 2013-02-10 14:28:51

+0

那麼匿名用戶無法訪問管理頁面,我已經測試過 – sonam 2013-02-10 14:31:11

+0

不,這意味着任何通過登錄身份驗證的用戶都可以看到管理頁面 – 2013-02-10 14:40:16

1

看問題本身,而不是在你的具體情況。

如果您需要用戶具有指定的所有角色才能訪問某個路徑,則需要更多配置,因爲如果當前安全令牌至少具有指定角色中的一個角色,則默認RoleVoter會授予訪問權限。

RoleVoter如果令牌具有至少一個傳遞角色,則授予訪問權限,但安全組件將每個指定角色分別傳遞給每個選民。因此,要改變或行爲和行爲,所有你需要做的是改變decition經理策略:

# app/config/security.yml 
security: 
    access_decision_manager: 
     # strategy can be: affirmative (default one), unanimous or consensus 
     strategy: unanimous # if any voter returns ACCESS_DENIED, access is denied 
0

如果我沒有得到你錯了,我想層次角色
是一個更好的方法http://symfony.com/doc/current/book/security.html#hierarchical-roles)。

 
#Hierarchical Roles 
Instead of associating many roles to users, you can define role inheritance rules by creating a role hierarchy: 

YAML 

app/config/security.yml 
security: 
    ... 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN:  ROLE_ADMIN 
     ROLE_BOTH_ROLE_TOGETHER: [IS_AUTHENTICATED_FULLY,ROLE_ADMIN] 

而他們oyu可以檢查層次結構。

相關問題