簡體   English   中英

Symfony2 FosUserBundle角色ROLE_ADMIN

[英]Symfony2 FosUserBundle Roles ROLE_ADMIN

我有這個問題。

使用FosUserBundle和FacebookBundle配置了我的Sf2 env。

我設法在前端的一些ADMIN only部分(意思是主持人的事情)。 默認情況下,在我的項目中創建的每個用戶都只有ROLE_USER。

“主持人”事物只能通過擁有ROLE_ADMIN來訪問。 問題是,即使我通過“ $user->addRole('ROLE_ADMIN')添加角色,檢查用戶是否有此角色失敗。我想展示一些東西,如果用戶將有這種角色,但我不能。

既不是“ {% if is_granted('ROLE_ADMIN') %} ”,也不是“ $this->container->get('security.context')->isGranted('ROLE_ADMIN') ”已成功。

每當我在TWIG上獲得FALSE或什么都沒有。

檢查用戶是否有ROLE_USER工作。

只是為了確保我添加我的配置內容。

security:
encoders:
    FOS\UserBundle\Model\UserInterface: sha512
    Symfony\Component\Security\Core\User\User: plaintext

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

providers:
    chain_provider:
        chain:
          providers: [fos_userbundle, my_fos_facebook_provider]
    fos_userbundle:
        id: user_provider
    my_fos_facebook_provider:
        id: my.facebook.user


firewalls:
    public:
        pattern: ^/
        form_login:
            login_path: /login
            check_path: /login_check
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            use_referer: true
        fos_facebook:
            app_url: "http://www.facebook.com/apps/application.php?id={{APPID}}"
            server_url: "http://l.local/app_dev.php/"
            login_path: /login
            check_path: /login_fb_check
            default_target_path: /
            provider: my_fos_facebook_provider
            use_referer: true
        logout:
            path:   /logout
            invalidate_session: false
        anonymous:    true

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/secured/.*, role: IS_AUTHENTICATED_FULLY }
    - { path: ^/facebook/,  role: [ROLE_FACEBOOK] }
    - { path: ^/dodaj$, role: ROLE_USER }
    - { path: ^/.*, role: [IS_AUTHENTICATED_ANONYMOUSLY] }

請,如果有人可以提供幫助,因為我不知道該怎么做。

我總是在檢查以確定我的角色(“ROLE_ADMIN”)是否已添加到我的數據庫中,事實上,它是。

角色是會話生成過程(連接,登錄..)。 所以你從安全上下文(會話)中得到它。 直接在twig模板中或從其他地方的securityContext對象:

is_granted('ROLE_ADMIN')模板中使用is_granted('ROLE_ADMIN')

在控制器(帶安全上下文)中使用$securityContext->isGranted('ROLE_ADMIN')

角色更改后不要忘記重新簽名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM