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

时间:2016-07-04 12:52:33

标签: symfony security authentication routes firewall

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

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

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

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

2 个答案:

答案 0 :(得分:0)

FosUserBundle

您可以轻松创建用户系统

答案 1 :(得分:0)

如果用户已登录,您可以签入重定向的操作。如果是,则根据用户加载数据。例如您按用户ID加载所需数据。

因此每个用户都能看到与自己相关的数据。

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