Symfony - 安全/路由设置以启用受密码保护的用户页面

Symfony - Security / routing setup to enable password protected user pages

我是 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 } 

关于如何执行此操作的任何提示?

更新:登录后我想重定向只有特定登录用户才能看到的页面。

我认为可以通过将会话用户名与用户路径相匹配来实现这一点?

FosUserBundle

您可以轻松创建用户系统

如果用户已登录,您可以检查重定向的操作。如果是,则根据用户加载数据。例如你通过他的用户id加载需要的数据。

所以每个用户看到的都是与自己相关的数据。

您可以在这个问题中找到有关用户身份验证处理的更多信息:How to check if an user is logged in Symfony2 inside a controller?