2016-07-04 96 views
0

雖然我設法設置了一個基於角色的身份驗證和防火牆的工作站點,但我對Symfony相當陌生我很努力地研究如何構建一個允許用戶登錄並訪問只有他們和管理員才能訪問的頁面的系統。Symfony - 啓用密碼保護用戶頁面的安全/路由設置

我真正想要的是一個動態的安全角色,這使得在自己的私人頁面,並阻止其他人在當前會話訪問的用戶...

這裏是我的實際配置:

 
security: 
    encoders: #define the encoders used to encode passwords 
     Symfony\Component\Security\Core\User\User: plaintext 
     IntuitByDesign\UserBundle\Entity\User: bcrypt 
    role_hierarchy: 
     ROLE_ADMIN: [ROLE_USER] 
    providers: 
     chain_provider: 
      chain: 
       providers: [in_memory, user_db] 
     in_memory: 
      memory: 
       users: 
        admin: { password: adminpass, roles: ROLE_ADMIN } 
     user_db: 
      entity: {class: IntuitByDesignUserBundle:User, property: username }  
    firewalls: 
     main: 
      logout: true 
      pattern: /.* 
      form_login: 
       login_path: login 
       check_path: login 
       default_target_path: /user 
      logout: 
       path: /logout 
       target:/
      security: true 
      anonymous: true 
    access_control: 
     - { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: /logout, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: /user, roles: ROLE_ADMIN } 
     - { path: /user-page/, roles: ROLE_USER} 
     - { path: /.*, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

如何做到這一點的任何提示?

更新:登錄後我想重定向頁面,只有特定的登錄用戶可以看到。

我認爲這可能實現的方式可能是匹配會話用戶名和用戶路徑?

+0

如果你是新上的Symfony,我可能會失去你這個,但你可以使用一個選民執行此操作:HTTP://的symfony .com/doc/current/cookbook/security/vot.html但我強烈建議使用FOSUserBundle。 http://symfony.com/doc/current/bundles/FOSUserBundle/index.html – Elyass

+0

究竟是什麼問題? – Terenoth

+0

我確切的問題:我希望用戶登錄並被重定向到只有他們可以看到的用戶頁面。 – user1645161

回答

0

你可以檢查在重定向操作,如果用戶登錄。如果是,根據用戶加載數據的用戶的系統。例如你通過他的用戶ID加載所需的數據。

因此,每個用戶都會看到與自己相關的數據。

您可以找到有關用戶身份驗證在這個問題上處理的詳細信息:How to check if an user is logged in Symfony2 inside a controller?

+1

謝謝我已經完成了...... – user1645161